2017-01-13 3 views
0

У меня есть следующие поля в моей SOLR Configure:Игнорировать специальные символы

<fieldType name="title" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" preserveOriginal="1" catenateAll="1" splitOnCaseChange="0"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

в поле я мог быть хранящей:

Человек-паук, Человек-паук, Человек-паук

Что бы например, для тех, кто ищет паука, чтобы получить все 3 варианта, и в идеале тот, кто ищет человека-паука, получит все 3 варианта. Помимо внесения изменений в контент, когда он индексируется, есть ли другой способ эффективно игнорировать специальные символы, но не обязательно разделять на них?

ответ

0

Одним из возможных решений, особенно если количество разделителя символа мало, чтобы заменить их через solr.PatternReplaceFilterFactory так:

<fieldType name="title" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
       <tokenizer class="solr.KeywordTokenizerFactory"/> 
       <filter class="solr.PatternReplaceFilterFactory" pattern="-" replacement=""/> 
       <filter class="solr.PatternReplaceFilterFactory" pattern=" " replacement=""/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
      <analyzer type="query"> 
       <tokenizer class="solr.KeywordTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
      </analyzer> 
     </fieldType> 

Если ключевое слово токенизатора это плохой вариант, так как он будет сохранять один маркер (который может быть в порядке для поля, такого как название), вы можете либо создать свой собственный токенизатор, который будет разделять заголовок только на нужные символы, либо добавлять дополнительные фильтры, такие как ngram, чтобы разрешить частичное совпадение в поле заголовка.

Смежные вопросы