因此,我在Lucene 3.0.2中使用了MultiFieldQueryParser,并且为它提供了多个字段。我想找出与查询匹配的字段;我在这里搜索,一位用户说绝对没有办法做到这一点。这是真的吗?如果是这样,任何人都可以推荐一种解决方法,或者允许我执行此操作的其他系统吗?

我可以将整个文档放在一个字段中,例如“目录”,但是我认为这会使问题更加严重。

我想用例如Brad来查询数据库,并查看查询是否来自电影名称,演员名称,导演名称等。

谢谢

最佳答案

我强烈建议将BooleanQuery与stnadard QueryParser结合使用:

BooleanQuery booleanQuery = new BooleanQuery();

FuzzyQuery field1Query = new FuzzyQuery(new Term("field1", searchTerm), 0.3f, 1, 10);
FuzzyQuery field2Query = new FuzzyQuery(new Term("field2", searchTerm), 0.3f, 1, 10);

booleanQuery.add(field1Query , BooleanClause.Occur.SHOULD);
booleanQuery.add(field1Query , BooleanClause.Occur.SHOULD);


这样,您可以精确搜索所需的字段并进行调整以产生微调的结果。假设这是您的最终目标。

关于java - 匹配查询时返回Lucene字段名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6368042/

10-12 17:21