1
你好,大家好我有一个问题:)Lucene的BooleanQuery.Builder构建不起作用
我创建了一个BooleanQuery像这样:
BooleanQuery.Builder qry = new BooleanQuery.Builder();
qry.add(new TermQuery(new Term("Name", "Anna")), BooleanClause.Occur.SHOULD);
如果我做这样的搜索现在:
TopDocs docs = searcher.search(qry.build(), hitsPerPage);
它获得零结果?但如果我使用此代码:
TopDocs docs = searcher.search(parser.parse(qry.build().toString()), hitsPerPage);
然后我得到正确的结果?你能解释一下为什么我必须再解析它吗?
我使用的版本5.5.0和名称是一个TextField
啊好吧谢谢非常多:)我在哪里可以设置忽略大小写? – Montezuma
Lucene并没有真正以这种方式工作,您可以在某处设置忽略大小写。这一切都取决于你的分析仪。大多数分析器都包含一个小写标记过滤器,它将小写所有内容。您必须确保您的查询通过兼容的分析器(理想情况下是同一个分析器)运行,以便生成匹配的令牌。 TermQuery不使用任何分析器,因此您必须事先执行该步骤,例如通过使用查询解析器,它通过分析器运行的东西(实际上没有首先构建布尔查询)。 – knutwalker