[英]How to enumerate x^2 + y^2 = z^2 - 1 (with additional constraints)
[英]How to build Lucene Query x AND (y OR z)
我正在尝试为Lucene创建查询以进行如下搜索
字词:“ searched_word” AND(类别:0或类别:1)
这意味着searched_word必须在单词字段中并且类别字段为0或1。
单词字段是普通字段类型类别字段是NumericField类型
BooleanQuery mainQuery = new BooleanQuery();
Query query1 = new TermQuery(new Term("category", NumericUtils.IntToPrefixCoded(0)));
Query query2 = new TermQuery(new Term("category", NumericUtils.IntToPrefixCoded(1));
Query queryTerm= new TermQuery(new Term("word", searchedWord));
mainQuery.Add(queryTerm, BooleanClause.Occur.MUST);
BooleanQuery innerOrQuery = new BooleanQuery();
//How do i add them as OR and as AND to mainQuery
innerOrQuery.Add(querySingleDirection, BooleanClause.Occur.MUST);
innerOrQuery.Add(queryBothDirection, BooleanClause.Occur.MUST);
mainQuery.Add(innerOrQuery, BooleanClause.Occur.MUST);
TopDocs topDocs = _indexSearcher.Search(mainQuery, Settings.Current.MaximumTopScoreCount);
Query queryTerm = new TermQuery(new Term("word", searchedWord));
Query query1 = new TermQuery(new Term("category", NumericUtils.IntToPrefixCoded(0)));
Query query2 = new TermQuery(new Term("category", NumericUtils.IntToPrefixCoded(1));
BooleanQuery innerOrQuery = new BooleanQuery();
innerOrQuery.Add(query1, BooleanClause.Occur.SHOULD);
innerOrQuery.Add(query2, BooleanClause.Occur.SHOULD);
BooleanQuery mainQuery = new BooleanQuery();
mainQuery.Add(queryTerm, BooleanClause.Occur.MUST);
mainQuery.Add(innerOrQuery, BooleanClause.Occur.MUST);
TopDocs topDocs = _indexSearcher.Search(mainQuery, Settings.Current.MaximumTopScoreCount);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.