Как повысить эффективность поисковых запросов в lucene?

#lucene

#lucene

Вопрос:

Я создаю поиск для своего приложения. Для введенного поискового запроса (foo),

1) Я ищу точное совпадение (foo), если оно возвращает NULL

2) Я использую нечеткий поиск (foo ~), если он возвращает NULL

3) Я использую подстановочный знак (foo *).

Это эффективный способ? Или есть какой-либо lucene способ сделать все это?

Ответ №1:

В Lucene нет встроенного способа сделать это. Однако обычно этот случай обрабатывается за пределами Lucene на стороне клиента. Да, по моему опыту, это очень эффективно, поскольку обычно обеспечивает высокую точность результатов. В некоторых источниках через Интернет это называется поэтапным поиском

Например. вы создаете запрос на точное совпадение, скажем, TermQuery(«field»,»foo»), если этот запрос ничего не возвращает, тогда вы используете FuzzyQuery и last one PrefixQuery (я буду рекомендовать его вместо WildcardQuery, для последнего случая, который вы хотите сделать)