Как настроить поиск Solr, чтобы получить лучшее совпадение? - PullRequest
1 голос
/ 22 марта 2012

Как выполнить поиск на основе лучшего соответствия вместо фильтрации строк базы данных, в которых нет одного слов? Можно ли использовать общий токенизатор или фильтр?

например, если я использую следующие условия поиска:
greek american

Тогда набор результатов должен включать все строки с greek ИЛИ american Если в базе данных были следующие строки:

german food
americans in paris
greek americans
thai food
greek food

Тогда он должен вернуть лучшие совпадения сверху, даже если он не имеет всех / некоторых поисковых терминов:

greek americans
greek food
americans in paris

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Это то, что Solr делает по умолчанию. Возможно, оценщик не соответствует вашим ожиданиям, вы должны включить debugQuery, чтобы лучше понять, как вычисляются оценки.

Учитывая ваш пример, вы должны убедиться, что ваш анализатор выполняет стемминг, чтобы american и americans анализировались одинаково.

Одна вещь, которая может сбить с толку, когда начинаешь работать с инструментом, который использует TF-IDF для оценки, это то, что он дает редким терминам больше шансов на хорошее ранжирование. Например, если american встречается в вашем индексе гораздо чаще, чем greek, запрос greek restaurant, скорее всего, даст греческим музеям более высокий рейтинг, чем американским ресторанам.

Вы можете настроить способ подсчета очков, написав свой собственный Сходство .

0 голосов
/ 22 марта 2012

Мне кажется, что ваш оператор по умолчанию "И".Следующее должно быть где-то в вашем файле schema.xml:

<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="AND"/>

Если вы хотите, чтобы оно было «ИЛИ» по умолчанию, используйте <solrQueryParser defaultOperator="OR"/>.В противном случае, используйте явное ИЛИ в своем запросе:

?q=(greek OR american)

Если вы опубликуете соответствующие части вашего файла schema.xml, возможно, я смогу помочь устранить некоторые неполадки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...