【发布时间】:2011-08-17 01:05:15
【问题描述】:
在 Lucene.Net 中,我需要创建一个查询以将搜索限制为特定字段的特定术语列表。
例如,我需要将“AutoMake”设为“Ford”或“Chevy”。所以,只要“AutoMake”的值是这两者之一,我们就很好。
这是我的 BooleanQuery 形成方式,但我认为这是不对的:
var query1 = new TermQuery(new Term("AutoMake", "Ford"));
var query2 = new TermQuery(new Term("AutoMake", "Chevy"));
var thisFilter = new BooleanQuery();
thisFilter.Add(query1, BooleanClause.Occur.MUST);
thisFilter.Add(query2, BooleanClause.Occur.MUST);
那里的“必须”有效地“与”查询,因此“AutoMake”必须同时是“福特”和“雪佛兰”,这是错误的。 (我已经阅读了 BooleanClause "SHOULD" 的一些内容,但我认为这也不对。)
基本上,我需要一个用于“OR”的 BooleanClause 运算符。我需要一种封装两个查询的方法,以便如果其中一个为真,那么整个查询为真? (因为,我有多个这样的查询作为子句输入到更大的查询中。)
这就是很棒的东西。
var query = new AnyOfTheseTermsQuery();
query.Add(new Term("AutoMake", "Ford"));
query.Add(new Term("AutoMake", "Chevy"));
这就是我要找的。这存在吗?
【问题讨论】:
标签: lucene lucene.net