2013-06-24 4 views
2

По умолчанию поиск по нескольким словам разбивается на файлы, содержащие каждое слово отдельно. Как я могу переопределить это значение по умолчанию и найти whoosh для точного соответствия? Хотя это, скорее всего, поддерживается, я не могу найти в документации google/whoosh.Точное совпадение нескольких слов в whoosh

Кроме того, поиск точного соответствия может иметь лучшую или худшую производительность, чем тот же поиск по нескольким словам?

ответ

1

Используйте phrase queries (т. Е. Поместите двойные кавычки вокруг слов, которые вы хотите согласовать в своем запросе), например. :

"to be or not to be" 

Однако, это работает только, если поле вы ищете в этом типе whoosh.fields.TEXT.

Что касается спектакля, поиск фразы обязательно медленнее, чем «классический поиск». Чтобы выполнить поиск фразы, сначала необходимо получить все документы, которые содержат все термины, указанные вами в запросе (это часть «классического поиска»), а затем сравнить термины позиций между запросом и документом чтобы проверить, похоже ли это на матч.

+0

Не лучше ли было бы найти все документы, содержащие первое (или самое длинное) слово, а затем проверить следующее n непосредственно следующих (или предшествующих) слов? – maged

+0

На самом деле, я понимаю, почему в большинстве случаев ваше описание будет быстрее, а мое только в исключениях. – maged

+1

@maged: я еще не проверил код Whoosh, но вполне вероятно, что при выдаче «фразового запроса» он уже выполняет задание соответствующим образом (как описано). – michaelmeyer