2009-02-27 14 views
5

Come posso riconoscere quando un utente ha perso uno spazio quando si immette un termine di ricerca? Ad esempio, se l'utente inserisce "usbcable", voglio cercare "cavo usb". Sto facendo una ricerca REGEX in MySQL per abbinare parole complete.Riconoscimento spazio mancante

Ho una tabella con tutti i termini utilizzati in una ricerca, quindi so che "usb" e "cavo" sono termini validi. C'è un modo per costruire una clausola WHERE che mi fornirà tutte le righe in cui il termine corrisponde a una parte della stringa?

Qualcosa di simile a questo:

SELECT st.term 
FROM SearchTerms st 
WHERE 'usbcable' LIKE '%' + st.term + '%' 

O qualsiasi altre idee?

+0

Se tale richiesta non funziona? –

+0

Beh, avrei dovuto provarlo prima di pubblicare. Quella query non funziona, ma con un CONCAT lo fa, in questo modo: WHERE "usbcable" LIKE Concat ('%', st.term, '%'). Penso che questo sia il modo più semplice e più pertinente (specifico per il mio sito). – Yisroel

risposta

5

Text Segmentation è una parte di Natural Language Processing ed è ciò che stai cercando in questo specifico esempio. È utilizzato nei motori di ricerca e nei correttori ortografici, quindi potresti avere un po 'di fortuna con il codice sorgente di esempio che esamina i correttori ortografici open source e i motori di ricerca.

Il controllo ortografico potrebbe essere il paradigma corretto da considerare in ogni caso, in quanto prima è necessario sapere se si tratta di una parola legittima o meno prima di tentare di separarlo.

-Adam

0

Pubblicato nei commenti, ma ho pensato che importante per far apparire come una risposta:

Se tale richiesta non funziona? - Simon Buchan

Seguito da:

Beh, avrei dovuto provato prima postato. Quella query non funziona, ma con un CONCAT lo fa, in questo modo: WHERE "usbcable" LIKE Concat ('%', st.term, '%'). Penso che questo sia il più semplice, e più pertinente (specifico per il mio sito ), strada da percorrere. - arnie0674

Certamente molto più facile che la segmentazione del testo per questa applicazione ...

-Adam