Lucene搜索复杂查询

时间:2009-03-19 16:32:08

标签: lucene lucene.net

这是我想要做的,使用伪代码:

lucene.Find((someField == "bar" || someField == "baz") && anotherField == "foo");

或者用英语,“找到 someField 是'bar'或'baz'的所有文件,其中 anotherField 是'foo'”。

如何使用Lucene进行这样的查询?

1 个答案:

答案 0 :(得分:5)

在Lucene查询语法中:

+(someField:bar someField:baz) +anotherField:foo

“+”表示该术语是必需的,就像Google搜索语法一样。括号将术语组成单个术语。没有“+”(或“ - ”),术语是可选的;至少有一个术语必须匹配,匹配的术语越多,得分越高。

将此字符串传递给QueryParser以创建Query对象。然后,可以根据您的需要将查询传递给多种搜索方法之一。