gpt4 book ai didi

c# - BooleanQuery 无法使用 Lucene.net 3.0.3

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:41 30 4
gpt4 key购买 nike

为什么在 Lucene.net 上使用 BooleanQuery 时第一个查询有效而第二个查询无效?

这是在 SHOPPING 字段上编入索引的示例:

Shoes for sale

Great bargain on shoes and accessories.

Buy cheap Shoes, Sneekers and Heels!

第一个查询(运行良好,它返回所有三个索引)。

Query query = MultiFieldQueryParser.Parse(Lucene.Net.Util.Version.LUCENE_30, 
"Shoes", new String[] { "SHOPPING" }, new Occur[] { Occur.SHOULD },
new SimpleAnalyzer()
);
hits = indexSearcher.search(query);

第二个查询(不返回任何内容,条件是:返回所有带有“shoes”但没有“accessories”的术语)。

Query query1 = new TermQuery(new Term("SHOPPING", "shoes"));
Query query2 = new TermQuery(new Term("SHOPPING", "accessories"));

BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.Add(query1, Occur.SHOULD);
booleanQuery.Add(query2, Occur.MUST_NOT);

hits = indexSearcher.search(booleanQuery);

最佳答案

我想我明白了。假设结合使用 MultiFieldQueryParser 和 BooleanQuery 来解决问题。

    Query query = MultiFieldQueryParser.Parse(Lucene.Net.Util.Version.LUCENE_30, "Shoes", new String[] { "SHOPPING" }, new SimpleAnalyzer());

Query queryOrig = parser.Parse("shoes");
Query queryOrig2 = parser.Parse("accessories");

var booleanQuery= new BooleanQuery();
booleanQuery.Add(queryOrig, Occur.MUST);
booleanQuery.Add(queryOrig2, Occur.MUST_NOT);

hits = indexSearcher.search(booleanQuery);

关于c# - BooleanQuery 无法使用 Lucene.net 3.0.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326191/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com