Paramètres SnowballPorterfilterFactory et Wildcard
-
28-09-2020 - |
Question
Je dispose d'un problème qui interrogea Solr en utilisant le type de champ suivant:
<fieldType name="text_ci" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
</fieldType>
Comme vous pouvez le constater, il applique le "SnowballPorterterfilterFactory" lors de l'indexation et de l'interrogation. Si j'expose quelque chose comme
Stuff souris et amusement
Il est indexé comme:
Comme vous pouvez le voir, le mot "souris" est transformé en "Mous" par "SnowballPorterfilterFactory". Qui est ce que nous voulons. Cependant, lorsque nous recherchons
souris *
Il ne semble pas appliquer la "boule de neigefilterfactory" de la même manière. Je suppose que c'est à la fin.
Ma question est .. Y a-t-il un moyen de faire le "SnowballPorterfilterFactory" savoir sur des caractères génériques? De sorte que lorsque j'intervoque pour
souris *
Je n'ai pas 0 résultats.
intéressant si j'exise pour
mous *
L'enregistrement revient.
ou quelqu'un peut-il offrir un meilleur moyen d'interroger / indexer ce type de champ?
merci Dave
La solution
du FAQ :
Contrairement à d'autres types de requêtes Lucene, de plantes génériques, de préfixes et de requêtes floues ne sont pas passées à travers l'analyseur, qui est le composant qui effectue des opérations telles que stemming et la masse inférieure. La raison de sauter l'analyseur est que si vous recherchiez des "chiens *", vous ne voudriez pas "chiens" d'abord tiré de "chien", car cela correspondrait alors "chien *", qui n'est pas la requête prévue. De toute façon, ces requêtes sont négligentes parce que QueryParser les rend minuscules. Ce comportement peut être modifié à l'aide de la méthode SetlowerCaseexPandedTerms (Boolean)
Si vous allez bien avec la modification de votre source de solr, SOLR-757 a un patch attaché à celui que vous pourriez trouver utile. Je ne connais pas d'un moyen de changer cela autre que de plonger dans la source cependant.
Autres conseils
La dernière fois que je vérifie, lorsque vous utilisez des caractères génériques, l'analyseur de requête n'est pas utilisé.Donc, depuis que vous utilisez une infiltration minusculaireFilterFactory, vos termes sont indexés en minuscules et la recherche de MOUS * ne reviendra rien.
Je pense que la seule chose à faire lorsque vous utilisez des caractères génériques consiste à vous assurer d'adapter votre requête à la manière dont vos termes sont indexés (d'une manière similaire à ce que votre analyseur de requête ferait).