Когда мы индексируем в 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](https://i.stack.imgur.com/NK28C.png)
Кто-нибудь знает, как мы можем получить наш точный запрос фразы "1a b2"? И может ли кто-нибудь пролить свет на то, что мы делаем неправильно
Спасибо!