2010-06-21 13 views
7

Parece que no puedo encontrar la forma de encontrar coincidencias de subcadenas con SOLR, he descubierto las coincidencias basadas en un prefijo, así que puedo obtener jamón para que coincida con la hamburguesa.Cadenas de subcadenas dentro de SOLR

¿Cómo podría obtener una búsqueda de 'hamburguesa' para que coincida con la hamburguesa también? Intenté hamburguesa pero esto arrojó un error '*' o '?' no permitido como primer personaje en WildcardQuery.

¿Cómo puedo unir subcadenas usando SOLR?

+0

¿sería tan amable de enviar código a cómo lo hizo el partido prefijo? – Roman

Respuesta

3

Puede habilitar esto, pero tendrá muchos recursos (por ejemplo, buscar SuffixQuery).

Ver: http://lucene.472066.n3.nabble.com/Leading-Wildcard-Search-td522362.html

Citando a la lista de correo: arounds de trabajo? Imagine hacer un segundo índice (o agregar otro campo) con todos los términos deletreados al revés.

=>

con Add ReverseStringFilter https://issues.apache.org/jira/browse/LUCENE-1398

y compatibilidad con las principales eficiente comodines de búsqueda: https://issues.apache.org/jira/browse/SOLR-1321

Por el momento parece issues.apache.org abajo. Intenta usar, p. caché de google

3

Como se indicó anteriormente en link, puede utilizar comodines principales con edismax (ExtendedDismaxQParser). Solo pruébalo para ver si es lo suficientemente rápido.

Algunos más información acerca de la reversedstring mencionado anteriormente también se puede encontrar aquí: solr.ReversedWildcardFilterFactory

9

Si alguien termina aquí después de buscar "apachesolr subcadena", hay una solución simple para esto: https://drupal.stackexchange.com/a/27956/10419 (de https://drupal.stackexchange.com/questions/26024/how-can-i-make-search-with-a-substring-of-a-word)

Agregue ngramfilter a la definición del tipo de texto en schema.xml en el directorio config de solr.

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" /> 
+0

Esto me ha estado persiguiendo durante semanas. Gracias por publicar, resolvió mi problema al tratar de filtrar/buscar según la subcadena. – Genzume

+0

Esto no funcionaría para conjuntos de datos muy grandes. El campo de gramo de borde necesitará mucha memoria al indexar datos. – alpeshpandya

Cuestiones relacionadas