如何让Lucene匹配查询中的所有单词?

pau*_*aul 14 lucene search

我使用Lucene允许用户搜索大量文档中的单词.Lucene似乎默认返回包含输入的任何单词的所有文档.

是否有可能改变这种行为?我知道'+'可以用来强制包含一个术语,但我想把它作为默认动作.

理想情况下,我希望功能类似于谷歌:' - '排除单词,'abc xyz'排除单词.

为了澄清 我还想到在查询中的所有空格中插入'+'.我只是想避免检测分组的术语(括号,引号等)并可能破坏查询.还有另一种方法吗?

Ada*_*ter 31

这类似于Lucene句子搜索问题.如果你有兴趣,这就是我回答这个问题的方法:

String defaultField = ...;
Analyzer analyzer = ...;
QueryParser queryParser = new QueryParser(defaultField, analyzer);

queryParser.setDefaultOperator(QueryParser.Operator.AND);

Query query = queryParser.parse("Searching is fun");
Run Code Online (Sandbox Code Playgroud)