Solr выделение слов в synonyms.txt вместе с условиями запроса - PullRequest
0 голосов
/ 26 марта 2019

Я новичок в Solr и пытаюсь выяснить, какое общее решение используется для решения проблемы синонимов из нескольких слов с выделением:
1. Когда мы ищем щетку для волос , слово зубная щетка также выделяется , поскольку зубная щетка находится в файле synonyms.txt .

HAIR BRUSH,HAIRBRUSH,HAIR-BRUSH,HAIRBRUSHES,HAIR BRUSHES 
TOOTH BRUSH,TOOTHBRUSH,TOOTH-BRUSH,TOOTHBRUSHES,TOOTH BRUSHES 
  1. Не могли бы вы сообщить мне, если это потому, что SynonymGraphFilterFactory используется как во время индексации, так и во время запроса?
  2. Если нет, то что нужно сделать, чтобы термины, не соответствующие запросу, не были выделены.

Конфигурация schema.xml для fieldType выглядит следующим образом:

<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
           <charFilter class="solr.PatternReplaceCharFilterFactory" 
                    pattern="[({.,\[\]/})]" replacement=" "/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" preserveOriginal="1"  catenateAll="1"  />
        <filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" />
      </analyzer>
      <analyzer type="query">
           <charFilter class="solr.PatternReplaceCharFilterFactory" 
                    pattern="[({.,\[\]/})]" replacement=" "/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" /> 
        <filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" />
        </analyzer>
    </fieldType>

Мы используем Solr: 6.5.1

...