En Solr (3.3), ¿es posible hacer un campo letra por letra que se pueda buscar a través de un EdgeNGramFilterFactory
y también sensible a las consultas de frase?Solr: consulta de frase exacta con EdgeNGramFilterFactory
Por ejemplo, yo estoy buscando un campo que, cuando contengan "informática contrat", se encontrará si el usuario escribe:
- contrat
- Informatique
- contr
- Informa
- "contrat Informatique"
- "información contrat"
Actualmente, he hecho algo como esto:
<fieldtype name="terms" class="solr.TextField">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldtype>
... pero fracasó en la frase consultas.
Cuando miro en el analizador de esquema en administrador Solr, considero que "informática contrat" genera las fichas siguientes:
[...] contr contra contrat in inf info infor inform [...]
Así que la consulta funciona con "contrat en" (fichas consecutivas), pero no "contrat inf" (porque estas dos fichas están separadas).
Estoy bastante seguro de que cualquier tipo de derivación puede funcionar con consultas de frase, pero no puedo encontrar el tokenizador de filtro correcto para usar antes del EdgeNGramFilterFactory
.
Hola, Xavier. ¿Puede explicar cómo transformó "cont info" en + cont + info? ¿Hay alguna clase de utilities fuera de la caja para esto? ¿O es solo identificar las citas dobles y transformarlas manualmente? Estoy tratando de resolver esto: http: // stackoverflow.com/questions/37033381/solr-search-field-best-practices – wattale
Fue una operación manual, buscando comillas dobles y agregando el signo más. No encontré nada que pudiera automatizar esto para mí: -/ –
Gracias por la respuesta xavier, para mí también después de rastrear tanto contenido no pude encontrar una solución lista para usar. Pensé que estaba reinventando la rueda haciendo esto manualmente. Pero supongo que hacerlo manualmente es la única opción disponible: | – wattale