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

Другие вопросы по тегам