Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Lucene.Net中,如何在特定字段的任何一个术语列表上指定匹配项?_Lucene_Lucene.net - Fatal编程技术网

在Lucene.Net中,如何在特定字段的任何一个术语列表上指定匹配项?

在Lucene.Net中,如何在特定字段的任何一个术语列表上指定匹配项?,lucene,lucene.net,Lucene,Lucene.net,在Lucene.Net中,我需要创建一个查询,将搜索限制为特定字段的特定术语列表 例如,我需要“AutoMake”是“Ford”或“Chevy”。因此,只要“AutoMake”的价值是这两种价值之一,我们就很好 下面是我如何形成布尔查询的,但我认为这是不对的: var query1 = new TermQuery(new Term("AutoMake", "Ford")); var query2 = new TermQuery(new Term("AutoMake", "Chevy")); v

在Lucene.Net中,我需要创建一个查询,将搜索限制为特定字段的特定术语列表

例如,我需要“AutoMake”是“Ford”或“Chevy”。因此,只要“AutoMake”的价值是这两种价值之一,我们就很好

下面是我如何形成布尔查询的,但我认为这是不对的:

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);
那里的“必须”有效地解决了这个问题,所以“汽车制造商”必须是“福特”和“雪佛兰”,这是错误的。(我读了一些关于布尔语从句“应该”的文章,但我认为这也不对。)

本质上,我需要一个布尔子句运算符来表示“OR”。我需要一种方法来封装两个查询,这样,如果其中一个是真的,那么整个查询就是真的?(因为,我有多个这样的查询作为子句输入到一个更大的查询中。)

这是最棒的

var query = new AnyOfTheseTermsQuery();
query.Add(new Term("AutoMake", "Ford"));
query.Add(new Term("AutoMake", "Chevy"));
这就是我要找的。这是否存在?

我认为“应该”是这类查询的正确运算符。设置一个小索引来测试这一点可能是值得的,但当我查看文档时,它似乎正是您所追求的


祝你好运,

是,用SHOULD子句将这两个术语添加到布尔查询中。这意味着查询将查找这两个术语中的任何一个。然后使用MUST子句将该查询添加到父布尔查询,这意味着子查询必须与文档匹配