2 votes

Solr WordDelimiterFilterFactory et les caractères de point.

J'utilise Solr par le biais de la gemme sunspot_rails v1.2.

Dans mon fichier schema.xml, j'ai ce qui suit :

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" catenateWords="1" preserveOriginal="1"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" preserveOriginal="1"/>
  </analyzer>
</fieldType>

Si j'indexe la chaîne firstname.lastname@example.com Je peux le trouver si je cherche example.com mais pas si je cherche firstname.lastname .

Si je retire WordDelimiterFilterFactory à partir des paramètres de la requête, alors je peux l'email en recherchant pour firstname.lastname Cependant, rien ne s'affiche lorsque je recherche example.com .

Comment puis-je modifier le fichier de configuration pour pouvoir effectuer une recherche par l'un ou l'autre de ces moyens ?

1voto

Compeete Points 1067

Vous pouvez vérifier comment votre configuration actuelle d'index et d'analyse des requêtes affecte vos recherches, en utilisant Page d'analyse de l'administrateur Solr une autre option consiste à utiliser Luke pour consulter l'index Lucene.

Cependant, il existe une alternative que vous pouvez explorer. Puisque les courriels et les URL doivent être traités d'une manière spécifique, Lucene dispose d'une variante de StandardTokenizer qui traite spécifiquement les courriels et les URL. Tokenizer email/URL de Lucene correspondant à Solr Email/URL Tokenizer Factory (en anglais)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X