Solr 7.x Phrase Search с кавычками игнорирует пунктуацию - PullRequest
0 голосов
/ 28 мая 2020

У меня есть поле 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
...