У меня есть поле Solr Full Text со следующими настройками ...
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="accents_en.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt"/>
<filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="1" protected="protwords_en.txt" splitOnCaseChange="0" generateWordParts="1" preserveOriginal="1" catenateAll="0" catenateWords="1"/>
<filter class="solr.LengthFilterFactory" min="1" max="100"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords_en.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="accents_en.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms_en.txt" expand="true" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt"/>
<filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="0" generateNumberParts="1" protected="protwords_en.txt" splitOnCaseChange="0" generateWordParts="1" preserveOriginal="1" catenateAll="0" catenateWords="0"/>
<filter class="solr.LengthFilterFactory" min="1" max="100"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords_en.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
При поиске с использованием кавычек «cat fi sh» Документ с «cats, fi sh,» возвращается в ответе. Но мне нужны только документы, точно соответствующие «cat fi sh» с пробелом.
Я попытался удалить всю токенизацию, кроме «solr.WhitespaceTokenizerFactory», но это все равно не сработало. Затем я удалил все фильтры и токенизаторы, и это тоже не сработало.
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
</analyzer>
<analyzer type="query">
</analyzer>
</fieldType>
Как сделать так, чтобы поиск цитат возвращал только точные фразы?
Это запрос solr, который я использую в пользовательском интерфейсе администратора solr с помощью Edismax ...
select?defType=edismax&fl=tm_X3b_en_aggregated_field_title,tm_X3b_en_aggregated_field_title,tm_X3b_en_rendered_item&ps=0&q="cat%20fish"&qf=tm_X3b_en_rendered_item^1%20%20tm_X3b_und_rendered_item^1%20%20tm_X3b_en_aggregated_field^1%20%20tm_X3b_und_aggregated_field^1%20%20tm_X3b_zxx_aggregated_field^1%20%20tm_X3b_en_body^1%20%20tm_X3b_und_body^1%20%20tm_X3b_zxx_body^1&qs=0