gpt4 book ai didi

c# - 在 Lucene.net 中,我想在同一个方面类别中执行 AND 但似乎没有简单的方法可以做到这一点

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:18 25 4
gpt4 key购买 nike

我们有一个客户想要设置成分方面。因此,一个产品项目会有一个包含所有成分的 Facet。赋予 Lucene 作为多值字段。

当有人在这方面做某事时,我想要的是项目池总是变大。我不想要巧克力或坚果的东西我想要巧克力和坚果,但似乎没有一种简单的方法可以让 Lucene 做到这一点。

到目前为止,我唯一的想法是创建一个向下钻取查询并对该项目进行向下钻取,然后在循环中将其作为基本查询传递给另一个向下钻取查询。

有没有更好的方法来处理这种情况?

if (facet != null && facet.IsLogicalAnd)
{
foreach (var option in selectedFacet.Options)
{
q.Add(selectedFacet.Name, option);
q = new DrillDownQuery(_facetsConfig, q);
}
}

这是我目前的解决方法代码 fyi

最佳答案

我不太了解构面或 DrillDownQuery,但您可以使用 BooleanQuery。你可以这样做:

var query = new BooleanQuery();
query.Add(new TermQuery(new Term("Ingredient","Chocolate")));
query.Add(new TermQuery(new Term("Ingredient","Nuts")));

当然,要使其正常工作,您需要将成分作为“简单”字段添加到索引中,而不仅仅是作为分面字段

更新 18-12-2019

刚好我在工作中也开始使用 Lucene 切面,并找到了解决这个问题的方法。它看起来像这样:

var drillDownQuery = new DrillDownQuery(facetsConfig, baseQuery);

var boolQuery = new BooleanQuery();
boolQuery.Add(new TermQuery(new Term("Ingredient", "Chocolate")), Occur.MUST);
boolQuery.Add(new TermQuery(new Term("Ingredient", "Nuts")), Occur.MUST);
drillDownQuery.Add("Ingredient", boolQuery);

希望对你有帮助

关于c# - 在 Lucene.net 中,我想在同一个方面类别中执行 AND 但似乎没有简单的方法可以做到这一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58140645/

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