Whoosh Query Композиция для документов, содержащих «большинство» терминов - PullRequest
1 голос
/ 17 октября 2011

Я только начал использовать Whoosh и заметил, что запросы, кажется, применяют логику к каждому термину, такому как AND ([term1, term2, ...]) или OR ([term1, term2, ...]).

Моя проблема в том, что я хочу включить в строку поиска документы, содержащие большинство терминов, но не обязательно все.Чем больше терминов в документе, тем более «актуальным» он должен быть.Например, если я ищу «большая коричневая корова», я хочу, чтобы результаты включали документы, которые соответствуют только терминам «коричневая» и «корова» или «большая» и «коричневая», но не обязательно оба.Конечно, если документы имеют все термины, они должны иметь более высокий рейтинг, чем другие.

Как я могу это сделать?(Без необходимости выполнять отдельный поиск для каждой отдельной комбинации терминов!)

1 Ответ

0 голосов
/ 17 октября 2011

Можно настроить парсер Whoosh по умолчанию на использование OR вместо AND между терминами запроса.См. http://packages.python.org/Whoosh/parsing.html#common-customizations.

. Затем вы можете написать собственный класс оценки, который оценивает элементы выше, если у них больше условий поиска.См. http://packages.python.org/Whoosh/searching.html#scoring-and-sorting и http://packages.python.org/Whoosh/api/scoring.html#module-whoosh.scoring.

В целом, документация является хорошим местом для начала поиска ответов на подобные вопросы.

...