2009-09-17 12 views
9

Estoy trabajando con la búsqueda de texto completo de MySQL, pero creo que carece de situaciones en las que la secuencia forma parte de una palabra dentro de un campo. Si mi campo es "New York Times" y busco "Time", no obtengo ningún resultado. La forma hacker de resolver esto es la creación de dos consultas, una que hace una búsqueda de texto completo y la otra que hace:MYSQL Búsqueda de texto completo y ME GUSTA

SELECT * FROM ___ WHERE 'string' LIKE %searchterm% 

¿Hay alguna manera de que puedo configurar mi búsqueda de texto completo para resolver este problema entonces no tengo que ejecutar la consulta extra?

Respuesta

2

Básicamente he renunciado a la búsqueda de texto completo de MySql a favor de Sphinx - un motor de búsqueda de texto completo que implementa el protocolo de red de MySql para que pueda "interponerlo" entre sus clientes y un servidor MySql, sin perder nada y obtener capacidades de texto completo ricas y serias. Tal vez no sea adecuado para tus necesidades (que no expresas del todo), pero creo que al menos es un trabajo de comprobación.

+0

Cool gracias mucho. Solo para aclarar mi pregunta. Tengo un campo que es New York Giants. Si agrego eso al índice de texto completo y luego busco "gigante", no aparecerá nada. ¿Cómo puedo usar la búsqueda de texto completo para devolver resultados en casos como estos? Voy a echar un vistazo a Sphinx. Gracias por el encabezado –

+0

@Russ, está buscando complementos ** stemming ** (para mysql 5.1, 5.0 no los admite), p. http://www.mnogosearch.org/doc/msearch-udmstemmer.html. –

+0

Muchas gracias Alex, agradezco la ayuda. Desafortunadamente, tengo las manos atadas y no puedo actualizar a mysql 5.1. Pero estoy un poco confundido, supongo que en 5.0 no puedo usar analizadores de clientes, pero ¿significa esto que no hay un método mysql nativo para hacerlo en 5.0? –

6

Puede usar comodines en la búsqueda de texto completo. Más información here

SELECT * FROM _____ WHERE MATCH (title) AGAINST ('time*' IN BOOLEAN MODE); 
+0

hmmm nice nice. No pensé en eso. El único problema es que es un pobre sustituto de la derivación, ya que no coincidirá con el "timing" y palabras como esa. Opté por hacer una búsqueda de texto completo y una búsqueda de concordancia de%% de% LIKE%. Es un poco tedioso y requiere consultas adicionales, pero genera resultados bastante sólidos. –

+0

Tampoco ayuda cuando una búsqueda necesita ir en otra dirección. Por ejemplo, los datos incluyen la palabra "ipad" pero el usuario busca "ipads". El comodín no ayudará en este caso. – Vincent

+0

@Arnold 'LIKE% ...%' matará su rendimiento, porque SQL no usará índices. Si opta por ese enfoque, probablemente no necesitará la búsqueda de texto completo. – PeerBr

Cuestiones relacionadas