最近在用Java+Lucene作一个站内搜索项目,在进行检索查询的时候涉及到4个关键字,而且3个是SHOULD,一个是MUST。这样就遇到了问题,根据官方文档说明和实际的测试发现,在检索的时候,若是其中一个字段为MUST,Searcher就会忽略其余的关键字。ide
为了解决这个问题,查了不少方法,最后用Filter解决了。解决方法为:把应为MUST来查询的字段,根据他的规律建立一个TermRangeFilter(根据你的实际状况来决定用哪一个Filter),在检索时,用Searcher的search(Query,Filter,Integer.MAX_VALUE);方法实现就能够了。测试
注:多字段时,Query我使用的是BooleanQuery。文档