【发布时间】:2020-05-09 17:40:47
【问题描述】:
我有以下结构的 lucene 文档
{
name : "A",
id :1
},
{
name : "B",
id :1
},
{
name : "C",
id :3
}
现在我有一个像 List 这样的集合,其中包含 A、B。我想选择名称为 A 或 B 的文档。所以按照上面的 lucene 文件,我应该有文件 A 和 B 。我想用一个 lucene 调用而不是每个文档的多个 lucene 调用来获取这两个文档。
我尝试使用 BooleanQuery 并在循环中添加我的搜索查询,但搜索查询没有返回任何内容。如果我用单个文档点击 lucene,它可以工作并返回单个文档。
谁能建议我如何通过单个查询检索所有匹配的文档?
我尝试了类似下面的方法
List<string> terms = new List<string>(){'A', 'B'};
var mainQuery = new BooleanQuery);
var parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, "name", analyzer);
foreach (var term in terms)
{
var query = parser.Parse(term);
mainQuery.Add(query, Occur.MUST_NOT);
}
var hits = _searcher.Search(mainQuery, 1000);
以上查询无效并返回 0 结果。
【问题讨论】: