Lucene的或搜索使用布尔查询 [英] Lucene OR search using Boolean query

查看:297
本文介绍了Lucene的或搜索使用布尔查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有多个字段,其中之一是在其中我存储类别名称为的产品的字符串字段...如电子产品,家,花园等

I have an index with multiple fields, one of which is a string field in which I store category names for a product... such as "Electronics", "Home", "Garden", etc

new StringField("category_name", categoryName, Field.Store.YES)); //categoryName is a value such as "Electronics"

我执行布尔查询来查找名称,价格和品类的产品,但我不知道该怎么办OR搜索,这样我可以在同一时间查询两大类。

I am performing a Boolean query to find products by name, price, and category but I'm not sure how to do an OR search so that I can query for two categories at the same time.

我当前的查询是这样的:

My current query looks like this:

String cat = "Electronics"
TermQuery catQuery = new TermQuery(new Term("category_name", cat));
bq.add(new BooleanClause(catQuery, BooleanClause.Occur.MUST)); // where "bq" is the boolean query I am adding to, I tried .SHOULD but that didn't help either

这正常工作的一个类别搜索,但我不知道如何搜索电子版或家庭,这将是两大类。

this works fine for a one category search, but I am not sure how to search "Electronics OR Home" which would be two categories.

推荐答案

您可以这样写:

BooleanQuery categoryQuery = new BooleanQuery();
TermQuery catQuery1 = new TermQuery(new Term("category_name", "Electronics"));
TermQuery catQuery2 = new TermQuery(new Term("category_name", "Home"));
categoryQuery.add(new BooleanClause(catQuery1, BooleanClause.Occur.SHOULD));
categoryQuery.add(new BooleanClause(catQuery2, BooleanClause.Occur.SHOULD));
bq.add(new BooleanClause(categoryQuery, BooleanClause.Occur.MUST));

这篇关于Lucene的或搜索使用布尔查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆