Solr предлагает точное совпадение
Я пытаюсь сделать так, чтобы solr возвращал точное совпадение по предложению, например:
- spellcheck.q = tota возвращает общее количество результатов, но
- spellcheck.q=total не возвращает итоговое значение в результатах.
Я использую это поле для предложений:
<fieldType name="textSpellShingle" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
Любая идея, как сделать так, чтобы Solr возвращал точные совпадения по предложению??
4 ответа
Вы используете компонент SpellChecker, который, как следует из названия, предназначен для проверки орфографии. Он возвращает предложения о том, как запись должна быть написана. Когда слово написано правильно (что соответствует точному совпадению), оно ничего не возвращает, поэтому вы не видите этого слова в списке.
Начиная с Solr 4.7, был добавлен новый компонент "Предложение", который фактически реализован для автоматической подсказки и дает ожидаемые результаты.
Можешь попробовать с этим
<fieldType name="textSpellShingle" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="front"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="50" side="back"/>
</analyzer>
</fieldType>
Как упомянуто на этой вики-странице: https://cwiki.apache.org/confluence/display/solr/Suggester
To be used as the basis for a suggestion, the field must be stored.
Убедитесь, что ваше поле сохранено. Ваше поле не сохраняется, поэтому оно возвращает данные, сжатые вашим индексатором.
Ваша проблема возникла из-за того, что вы использовали старый компонент предложить, основанный на компоненте проверки орфографии (я полагаю, вы использовали версию solr до 5).
При старой проверке орфографии / предложить, если слово соответствует, оно не возвращается в ответе!
Протестируйте с помощью solr.suggestComponent (если он присутствует в вашей версии).
см.: https://cwiki.apache.org/confluence/display/solr/Suggester