#lucene
#lucene
Вопрос:
Я создаю поиск для своего приложения. Для введенного поискового запроса (foo),
1) Я ищу точное совпадение (foo), если оно возвращает NULL
2) Я использую нечеткий поиск (foo ~), если он возвращает NULL
3) Я использую подстановочный знак (foo *).
Это эффективный способ? Или есть какой-либо lucene
способ сделать все это?
Ответ №1:
В Lucene нет встроенного способа сделать это. Однако обычно этот случай обрабатывается за пределами Lucene на стороне клиента. Да, по моему опыту, это очень эффективно, поскольку обычно обеспечивает высокую точность результатов. В некоторых источниках через Интернет это называется поэтапным поиском
Например. вы создаете запрос на точное совпадение, скажем, TermQuery(«field»,»foo»), если этот запрос ничего не возвращает, тогда вы используете FuzzyQuery и last one PrefixQuery (я буду рекомендовать его вместо WildcardQuery, для последнего случая, который вы хотите сделать)