2013-12-10 3 views
3

Я использую компонент Solr Suggestester и задавался вопросом, могут ли результаты быть отфильтрованы параметром fq. У меня есть запрос, как это:Запрос фильтра Solr для справочника

http://localhost:8982/solr/core1/suggest?q=shirts&fq=category_id%3A321&wt=json&indent=true&spellcheck=true&spellcheck.build=true 

Здесь я пытаюсь получить некоторые предложения для q=shirts. Я хочу отфильтровать это на fq=category_id:321, так что я не получаю предложения из других категорий. Потому что категория с category_id:321 не имеет продуктов, связанных с shirts, она не должна возвращать какие-либо предложения. Но это так. И когда вы пытаетесь найти это предложение, он ничего не находит, потому что «оригинальный» поиск фильтруется с параметрами fq=....

Я нашел что-то с collate здесь http://wiki.apache.org/solr/SpellCheckComponent#spellcheck.collate. Он сопоставляет мои результаты, но также возвращает предложения для shirts.

Итак, мой вопрос в том, является ли подсказщик (или, в основном, SpellCheckerComponent) осведомленным о параметре fq, и как я могу использовать этот параметр для фильтрации предложений (или на более позднем этапе - исправления правописания).

РЕДАКТИРОВАТЬ

я выяснил, что «нормальный» компонент орфографии (например, с классом solr.IndexBasedSpellChecker, например), действительно имеет параметр fq во внимание. Я могу установить

<str name="spellcheck.collate">true</str> 
    <str name="spellcheck.collateExtendedResults">false</str> 

и предложение для shitr не возвращается при фильтрации по определенной категории идентификатор, где ключевое слово shirt нет.

Мне интересно, почему это не работает с компонентом-предложением. Есть идеи?

ответ

1

Я так не думаю, вам нужно взглянуть на это немного по-другому, чтобы понять, почему. Как вы уже знаете, SpellChecker работает на основе словаря, построенного из поля, указанного в конфиге.

по умолчанию текст solr.DirectSolrSpellChecker ...

и копия поля, которые должны грим ваш словарь во время индексации заполнить поле «текст», следовательно, словарь. Пример:

На данный момент проверка орфографии не знает, откуда взялось предложение.

Так при сличении вы можете сделать немного лучше, вы пытались & = истина орфографии & spellcheck.extendedResults = верно & spellcheck.collate = верно? Это приведет к некоторым результатам.

Spellcheck.extendedResults, укажите дополнительную информацию о предложении, например частоту (хиты) в индексе, которая может помочь вам в вашей логике.

+0

Спасибо за ваш ответ. Учитывает ли значение 'extendedResults' значение' fq'? Скажем, я отфильтровываю свой запрос по категории 1, советник возвращает некоторые значения, но поле 'extendedResults' говорит, нет ли каких-либо значений для вашего текущего запроса? – 23tux

Смежные вопросы