Effectuer de correspondance EXACTE sur SOLR recherche
Je me suis mise en œuvre d'une SOLR search. Quand je tape dans l'e.g Richard Chase-je obtenir
tous les Richards de l'index et de toutes les Poursuites, comme Johnny Chase etc.. alors qu'en réalité, je ne veux le retour de tous les noms qui correspondent à la FOIS à Richard ET Chase.
ma config paramètres sont
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
et ma requête recherches champ de texte
texte:Richard Chase
les idées de ce que je fais mal?
- juste une chose...la recherche doit correspondre à des cas e.g Richard John Chase ou M. Richard Chase
Vous devez vous connecter pour publier un commentaire.
Vous utilisez StandardTokenizerFactory, qui adhère à la Limite de mot de règles.
Cela signifie que vos mots se diviser sur les espaces.
si vous voulez une vraie correspondance exacte, j'.e
Richard Chase
pour les documents contenant uniquementRichard Chase
exactement, alors vous devriez vous KeywordTokenizerFactory.Mais comme vous le mentionnez, vous voulez Richard John Chase mais pas Johnny Chase, il me dit que vous voulez des matchs de Richard et Chase.
Vous pouvez soit rechercher
Richard AND Chase
ou modifier vos paramètres par défaut de l'opérateur dansschema.xml
êtreAND
au lieu deOR
. Attention, ce réglage est global.Vous devez utiliser PhraseQuery (
text:"Richard Chase"
) pour obtenir les documents où les deuxRicahard
etChase
sont à proximité les uns des autres. Si vous souhaitez également trouver, disons,Richard X. Chase
vous pouvez utilisertext:"richard chase"~1
.Voir http://www.solrtutorial.com/solr-query-syntax.html
Pour correspondance exacte vous pouvez définir mm(Minimum "Doit" Correspondre) paramètre de votre analyseur de requête à 100% dans votre solrconfig.xml
Spécifie un nombre minimum de clauses qui doivent correspondre à une requête. Ou vous pouvez remplacer ce paramètre (q.mm) à la requête de temps en demande