我需要从字符串中提取单个术语,以使用BooleanQuery
构建查询。
我正在使用QueryParser.parse()
方法,这是我的代码段:
booleanQuery.add(
new QueryParser(
org.apache.lucene.util.Version.LUCENE_40,
"tags",
new WhitespaceAnalyzer(org.apache.lucene.util.Version.LUCENE_40)
).parse("tag1 tag2 tag3"),
BooleanClause.Occur.SHOULD);
我想知道这是否是将单个术语传递给booleanQuery的正确方法。
QueryParser.parse
方法返回一个SrndQuery
对象,我直接将其传递给booleanQuery.add()
方法。
不确定这是否正确。我应该从SrndQuery
或类似的东西中提取单个术语,并多次调用booleanQuery.add()
吗?
更新:打印查询
*.*:*.* title:Flickrmeetup_01 description:Michael description:R. description:Ross tags:rochester tags:ny tags:usa tags:flickrmeetup tags:king76 tags:eos350d tags:canon50mmf14 tags:mikros tags:canon tags:ef tags:50mm tags:f14 tags:usm tags:canonef50mmf14 tags:canonef50mmf14usm
答案 0 :(得分:1)
我相信你应该提取标记,将每个标记包装在一个Term中,然后为它创建一个TermQuery,然后将TermQuery添加到BooleanQuery中。无论如何,SrndQuery是抽象的,所以我猜你当前的代码会创建一个子类的实例,这可能不是你的意思。您可能希望为此创建自己的自定义QueryParser。