Lucene"或Queries"

12 lucene search

我是Lucene的新手,我正在尝试进行类似的搜索

 content="some thext" and (id ="A" or id="B" or id="c")
Run Code Online (Sandbox Code Playgroud)

我真的迷失了,你能帮助我吗?

谢谢.

Ale*_*kov 23

BooleanQuery mainQuery = new BooleanQuery();

TermQuery contentFilter = new TermQuery(new Term("content", "some text"));
mainQuery.add(contentFilter, BooleanClause.Occur.MUST);

BooleanQuery idFilter = new BooleanQuery();
idFilter.setMinimumNumberShouldMatch(1);
idFilter.add(new TermQuery(new Term("id", A)), BooleanClause.Occur.SHOULD);
idFilter.add(new TermQuery(new Term("id", B)), BooleanClause.Occur.SHOULD);
idFilter.add(new TermQuery(new Term("id", C)), BooleanClause.Occur.SHOULD);
mainQuery.Add(idFilter, BooleanClause.Occur.MUST);
Run Code Online (Sandbox Code Playgroud)

  • 我发现有用的解释(来自Occur javadocs):对于没有Occur.MUST子句的BooleanQuery,一个或多个Occur.SHOULD子句必须匹配要匹配的BooleanQuery的文档. (3认同)

Ada*_*ter 15

我相信Query Parser Syntax文档中的"分组"部分提供了答案:

(jakarta OR apache) AND website
Run Code Online (Sandbox Code Playgroud)

我怀疑你应该使你的运算符(and,or)大写.同样,我认为你不能使用equals运算符(改为使用冒号).

content:"some thext" AND (id:"A" OR id:"B" OR id:"c")
Run Code Online (Sandbox Code Playgroud)