Я получаю неожиданные результаты в Solr и надеюсь, что кто-нибудь может помочь. В моем schema.xml есть splitOnCaseChange = "1" для поля, в котором я ищу (как индекс, так и запрос), а поведение поиска по умолчанию - "ИЛИ".
У меня есть поле со словом "Авиакомпания" проиндексировано. Когда я ищу "Авиакомпания", я получаю совпадение. Когда я ищу "Airline Alias", я получаю совпадение (как и ожидалось, так как это OR). Однако, когда я ищу "AirlineAlias", я не получаю совпадения. Я ожидал, что свойство splitOnCaseChange разделит запрос AirlineAlias на два базовых слова. Однако, если это произошло, то он должен найти совпадение с «Авиакомпанией» (т.е. это должен быть тот же запрос, что и «Псевдоним авиакомпании»).
Я правильно понимаю? Если да, то какие-нибудь идеи о том, почему я не получаю правильные результаты поиска?
Я скопировал соответствующие разделы из файла schema.xml ниже.
Заранее спасибо за помощь.
<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory" />
</analyzer>
</fieldType>
<fields>
<field name="value" type="text_en_splitting" indexed="true" stored="true" multiValued="true" omitNorms="true" />
/fields>
<solrQueryParser defaultOperator="OR" />