Solr Spell Check основанный на результатах запрос фильтра

Я реализовал Solr SpellCheck Component на основе документа http://wiki.apache.org/solr/SpellCheckComponent, он работает хорошо. Но я пытаюсь отфильтровать результат проверки орфографии на основе какого-то другого фильтра. Рассмотрим следующую схему

product_name
product_text
product_category
product_spell -> copy string from product_name and product_text . And tokenized using white space analyzer

Для вышеупомянутой схемы я пытаюсь отфильтровать результат проверки орфографии на основе предоставленной категории. Я пытался сделать запрос, например, http://127.0.0.1:8080/solr/colr1/myspellcheck/?q=product_category:160%20appl&spellcheck=true&spellcheck.extendedResults=true&spellcheck.collate=true. Результаты проверки правописания не учитывают товарную категорию: 160

Это потому, что словарь был построен для всех категорий? Если так, то стоит ли создавать словарь для каждой категории?

Разве невозможно иметь другое условие фильтра в компоненте проверки орфографии?

Я использую Solr 3,5

1 ответ

Решение

Я ранее понял из проблемы SOLR-2010, что фильтрация через fq Параметр должен быть возможен с использованием сопоставления, но это не так, я думаю, что я неправильно понял.

На самом деле, SpellCheckComponent имеет, скорее всего, отдельный индекс, за исключением DirectoSolrSpellChecker реализация. Это означает, что выбранное вами поле индексируется в другом индексе, который содержит только информацию об этом конкретном поле, которое вы выбрали для исправления орфографии.

Если вам интересно, вы также можете посмотреть, как выглядит этот дополнительный индекс, используя luke, поскольку это, конечно, индекс lucene. К сожалению, фильтрация с использованием других полей здесь невозможна, просто потому, что там есть только одно поле, которое вы используете для исправления орфографии.

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