Есть две части, чтобы заставить это работать:
- Вам необходимо правильно проанализировать входящие документы, чтобы отдельные слова были помечены и проиндексированы отдельно
- Пользовательский запрос должен быть токенизирован, а токены объединены с оператором
AND
.
Для # 1 есть ряд анализаторов и токенизаторов, которые поставляются с Lucene - смотрите в пакете org.apache.lucene.analysis
. Существуют варианты для разных языков, стволовых, стоп-слов и т. Д.
Для # 2 снова есть много парсеров запросов, которые идут с Lucene, в основном в пакете org.apache.lucene.queryParser
. MultiFieldQueryParser
может быть полезно для вас: чтобы каждый срок присутствовал, просто позвоните
QueryParser.setDefaultOperator(QueryParser.AND_OPERATOR)
Lucene in Action , хотя несколько версий устарели, все еще точны и чрезвычайно полезны для получения дополнительной информации об анализе и анализе запросов.