Lucene搜索复杂查询

Jud*_*ngo 1 lucene lucene.net

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

lucene.Find((someField == "bar" || someField == "baz") && anotherField == "foo");
Run Code Online (Sandbox Code Playgroud)

或者用英语,"查找someField为'bar'或'baz'的所有文档,以及anotherField为'foo'的文件".

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

eri*_*son 5

在Lucene查询语法中:

+(someField:bar someField:baz) +anotherField:foo
Run Code Online (Sandbox Code Playgroud)

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

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