Solr splitOnCaseChange во время запроса?

Я получаю неожиданные результаты в 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" />

person Vod    schedule 16.08.2012    source источник


Ответы (1)


Получил ответ от Джека Крупански в списке рассылки Solr, поэтому обновляю его для будущих поисковиков ...

Просто установите autoGeneratePhraseQueries = "false" в тип поля = "text_en_splitting". Текущие настройки обрабатывают AirlineAlias ​​как процитированную фразу "Airline Alias".

person Vod    schedule 20.08.2012