Dans Solr (3.3), est-il possible de faire un champ lettre par lettre consultable via un EdgeNGramFilterFactory
et également sensible aux requêtes de phrase?Solr: requête phrase exacte avec un EdgeNGramFilterFactory
Par exemple, je suis à la recherche d'un champ qui, si contenant "contrat informatique", on trouvera si les types d'utilisateurs:
- Contrat
- informatique
- Contr
- Informa
- "contrat informatique"
- "info contrat"
Actuellement, je fait quelque chose comme ceci:
<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>
... mais il a échoué sur les requêtes de phrase.
Quand je regarde dans l'analyseur de schéma dans solr admin, je trouve que « contrat informatique » a généré les jetons Suivis:
[...] contr contra contrat in inf info infor inform [...]
Ainsi, la requête fonctionne avec « contrat dans » (jetons consécutifs), mais pas "contrat inf" (parce que ces deux jetons sont séparés).
Je suis assez sûr que tout type de stemming peut fonctionner avec des requêtes de phrase, mais je ne peux pas trouver le bon tokenizer de filtre à utiliser avant le EdgeNGramFilterFactory
.
Salut, Xavier. Pouvez-vous s'il vous plaît expliquer comment avez-vous transformé "cont info" en + cont + info y at-il une classe out-of-the-box pour cela? Ou est-ce simplement identifier les doubles citations et les transformer manuellement? J'essaie de résoudre ceci: http: // stackoverflow.com/questions/37033381/solr-search-field-best-practices – wattale
Ce fut une opération manuelle, à la recherche de guillemets et en ajoutant le signe plus. Je n'ai pas trouvé quelque chose qui pourrait automatiser cela pour moi: -/ –
Merci pour la réponse xavier, Pour moi aussi, après avoir rampé tellement de contenu ne pouvait pas trouver une solution hors de la boîte. Je pensais que je réinvente la roue en faisant cela manuellement. Mais je suppose que le faire manuellement est la seule option disponible: | – wattale