не анализируются синонимы - PullRequest
       31

не анализируются синонимы

3 голосов
/ 29 сентября 2011

Я делаю функцию автоматического предложения, используя прошлые поиски в solr. Synonyms.txt содержит список типичных опечаток / орфографических ошибок и т. Д. Он настроен для запуска по индексу и с помощью инструмента anaysis в администраторе. Я вижу, что он работает правильно - однако, похоже, он не применяется к оперативным данным.

Field type :
<field name="suggest_ngrams" type="text_ngram" indexed="true" stored="false" multiValued="true" />

Schema:
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100">
 <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrement="true"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
 </analyzer>
 <analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>   
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrement="true"/>
 </analyzer>

and an example of synonyms.txt
watch, watches, watche, watchs => watch

Так что во время индекса я бы ожидал, что «watche» будет заменен на «watch» - похоже, это не так (хотя инструмент анализа говорит, что это именно то, что он делает.

Чтобы было ясно, если я запрашиваю solr (? Q = watc), в результатах появляется фраза "watche"

Любые идеи или идеи будут оценены, так как я думаю, что все настроено правильно

Спасибо

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Если я правильно понял вопрос: -
Синонимы используются только во время индекса и не влияют на сохраненные значения.
Итак, в анализе вы видите значения времени индекса, которые, кажется, работают нормально.
Когда вы запрашиваете solr и он соответствует этому результату, результаты будут возвращать только "watche", поскольку это сохраненное исходное значение.
Сохраненные значения никогда не изменяются и сохраняются как есть и возвращаются в ответе.

Пожалуйста, уточните, правильно ли я понял.

0 голосов
/ 03 января 2015

Как описал @Jayendra, solr не изменяет сохраненное значение. Поэтому вы должны найти другой способ преодоления этого препятствия. В моем случае я придумываю решение с использованием аспекта. Если вы фасетируете это поле, вы получите индексированное значение (Mapped).

Другое решение - Вы можете применить фильтры к данным в отдельном процессе перед загрузкой данных в Solr

.
...