当使用多个术语时,是否可以控制操作的顺序?
例如,
Lucene.Net.Search.TermQuery tq1 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("location", "seattle"));
Lucene.Net.Search.TermQuery tq2 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("location", "portland"));
Lucene.Net.Search.TermQuery tq3 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("location", "spokane"));
Lucene.Net.Search.TermQuery tq4 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("type", "city"));
当我应用搜索时,假设我想应用上面的术语来过滤我的搜索,让我们搜索food...so我的查询格式如下所示
食物与((tq1或tq2或tq3)和tq4)
目前,我已经能够以以下格式构建它
{+xml:food +(location:seattle location:portland location:spokane +location:city)}
但是,我正在尝试将其格式化为
{+xml:food +(+(location:seattle location:portland location:spokane) +location:city)}
基本上,我所做的就像这样……
Lucene.Net.Search.BooleanQuery bq = new Lucene.Net.Search.BooleanQuery();
Lucene.Net.Search.BooleanQuery innerBQ = new Lucene.Net.Search.BooleanQuery();
bq.Add("xml:food", Lucene.Net.Search.BooleanClause.Occur.MUST);
foreach (Lucene.Net.Index.Term term in listOfTerms)
{
Lucene.Net.Search.TermQuery tq = new Lucene.Net.Search.TermQuery(term));
innerBQ.Add(tq, Lucene.Net.Search.BooleanClause.Occur.SHOULD);
}
innerBQ.Add("location:city", Lucene.Net.Search.BooleanClause.Occur.MUST);
bq.Add(innerBQ, Lucene.Net.Search.BooleanClause.Occur.MUST);
如有任何建议,欢迎光临。
发布于 2012-12-12 14:13:12
您需要将location:city
子句添加到bq
而不是innerBQ
https://stackoverflow.com/questions/13831561
复制相似问题