2009-02-27 13 views
5

¿Cómo puedo reconocer cuando un usuario ha perdido un espacio al ingresar un término de búsqueda? Por ejemplo, si el usuario ingresa "usbcable", quiero buscar "usb cable". Estoy haciendo una búsqueda de REGEX en MySQL para que coincida con las palabras completas.Reconocer espacio perdido

Tengo una tabla con cada término usado en una búsqueda, entonces sé que "usb" y "cable" son términos válidos. ¿Hay alguna manera de construir una cláusula WHERE que me dé todas las filas donde el término coincide con una parte de la cadena?

Algo como esto:

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

O cualquier otra idea?

+0

¿Esa consulta no funciona? –

+0

Bueno, debería haberlo probado antes de publicar. Esa consulta no funciona, pero con un CONCAT sí lo hace, así: DONDE 'usbcable' LIKE Concat ('%', st.term, '%'). Creo que este es el camino más simple y más relevante (específico de mi sitio). – Yisroel

Respuesta

5

Text Segmentation es una parte de Natural Language Processing, y es lo que está buscando en este ejemplo específico. Se utiliza en los motores de búsqueda y correctores ortográficos, por lo que puede tener algo de suerte con el código fuente de ejemplo en buscadores de ortografía de código abierto y motores de búsqueda.

La revisión ortográfica podría ser el paradigma correcto a considerar de todos modos, ya que primero debe saber si es una palabra legítima o no antes de intentar separarla.

-Adam

0

publicado en los comentarios, pero pensé que era importante para que aparezca como una respuesta:

¿Esa consulta no funciona? - Simon Buchan

Seguido por:

Bueno, yo debería haber probado antes publicado. Esa consulta no funciona, pero con un CONCAT lo hace, así: DONDE 'usbcable' LIKE Concat ('%', st.term, '%'). Creo que este es el más simple, y el más relevante (específico de mi sitio ), el camino a seguir. - arnie0674

Ciertamente mucho más fácil que la segmentación del texto para esta aplicación ...

-Adam