Вопрос запроса фразы Solr для WordDelimiterGraphFilterFactory - PullRequest
0 голосов
/ 06 июля 2018

Когда мы индексируем в Solr поле 'myfield' со значением '1a b2', мы обнаруживаем неожиданное поведение.

Запрашивая простой запрос myfield: (1a b2), вы получаете запросы на нужные нам документы.

Но при использовании запроса фразы, например myfield: «1a b2», мы неожиданно ничего не нажимаем.

Наша схема выглядит следующим образом:

    <fieldType name="full_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true" positionIncrementGap="100">
       <analyzer type="index">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.WordDelimiterGraphFilterFactory"
                   generateWordParts="1"
                   generateNumberParts="1"
                   catenateWords="1"
                   catenateNumbers="1"
                   catenateAll="1"
                   splitOnCaseChange="1"
                   preserveOriginal="1"
                   splitOnNumerics="1"
                   stemEnglishPossessive="1"
           />
           <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
           <filter class="solr.WordDelimiterGraphFilterFactory"
                   generateWordParts="1"
                   generateNumberParts="1"
                   catenateWords="1"
                   catenateNumbers="1"
                   catenateAll="1"
                   splitOnCaseChange="1"
                   preserveOriginal="1"
                   splitOnNumerics="1"
                   stemEnglishPossessive="1"
           />
           <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt"/>
           <filter class="solr.FlattenGraphFilterFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
   </fieldType>
   <field name="myfield" type="full_ci" indexed="true" stored="false" required="false" multiValued="true"/>

Наши файлы synonyms.txt содержат эту информацию:

one,1
i,1
two,2
ii,2

Глядя на страницу анализа Solr, мы можем увидеть, как было проиндексировано значение, как показано на диаграмме. WordDelimiterGraphFilterFactory, кажется, заставляет «b2» появляться в позиции 3, и мы предполагаем, почему наш запрос фразы «1a b2» не получает попадания (потому что в этой фразе b2 находится в позиции 2?).

Если мы изменим наш запрос фразы на «1 a b 2» или «1 a b2», то мы получим попадание, что имеет смысл, согласно странице анализа администратора Solr. Но пользователь не наберет это.

Solr analysis print screen

Кто-нибудь знает, как мы можем получить наш точный запрос фразы "1a b2"? И может ли кто-нибудь пролить свет на то, что мы делаем неправильно

Спасибо!

...