我们有一个客户想要设置配料面。因此,一个产品将具有包含所有成分的Facet。赋予Lucene作为多值字段。
当有人在这个方面进行某些操作时,我想要的是使项目库始终变得更大。我不想要巧克力或坚果的东西,我想要巧克力和坚果的东西,但似乎没有一种简单的方法可以使Lucene做到这一点。
到目前为止,我唯一的想法是创建一个向下钻取查询并对该项目进行向下钻取,然后循环将其作为基础查询传递给另一个向下钻取查询。
是否有更好的方法来处理这种情况?
我对构面或DrillDownQuery
不太了解,但是您可以使用BooleanQuery
。您可以:
var query = new BooleanQuery();
query.Add(new TermQuery(new Term("Ingredient","Chocolate")));
query.Add(new TermQuery(new Term("Ingredient","Nuts")));
当然,要使它起作用,您需要将成分添加为索引中的“简单”字段,而不仅仅是多方面字段