2012-05-18 15 views
7

Si utiliza una instrucción SQL 'Me gusta' para consultar datos, devolverá los datos aunque solo coincidan parcialmente. Por ejemplo, si estoy buscando comida y hay un artículo en mi db llamado "pasas" al usar SQL, la consulta devolvería "pasas" incluso si mi búsqueda solo contenía "rai". En elasticsearch, la consulta no devolverá un registro a menos que se especifique el nombre completo (en este caso, "pasas"). ¿Cómo puedo obtener elasticsearch para que se comporte de manera similar a la declaración SQL? Estoy usando Rails 3.1.1 y PostgreSQL. ¡Gracias!Cómo obtener elasticsearch para que se comporte de forma similar a SQL 'LIKE'

Respuesta

5

Al crear el índice de modelo para elasticsearch use tokenizer en el índice que cumplirá con sus requisitos. Por. p.ej.

tokenizer: { 
       :name_tokenizer => {type: "edgeNGram", max_gram: 100, min_gram: 3, side: "front"} 
      } 

Esto creará muestras de tamaño de 3 a 100 de sus campos y, como se da como parte frontal se comprobará desde el arranque. Puede obtener más detalles aquí http://www.slideshare.net/clintongormley/terms-of-endearment-the-elasticsearch-query-dsl-explained

Cuestiones relacionadas