java - Lucene OR 搜索使用 boolean 查询

标签 java apache lucene booleanquery

我有一个包含多个字段的索引,其中一个是字符串字段,我在其中存储产品的类别名称......例如“电子”、“家庭”、“花园”等

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

我正在执行 boolean 查询以按名称、价格和类别查找产品,但我不确定如何执行 OR 搜索以便我可以同时查询两个类别。

我当前的查询如下所示:

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

这对于单类别搜索来说效果很好,但我不确定如何搜索“Electronics OR Home”,这将是两个类别。

最佳答案

你可以这样写:

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));

关于java - Lucene OR 搜索使用 boolean 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204726/

相关文章:

java - 覆盖java对象中的哈希码的目的是什么?

php - 将html解析为php,htaccess提示下载

java - Solr Tokenizer 添加词形还原器的问题

search - Lucene.net 中的 "Did you mean?"功能

java - org.apache.solr.common.SolrException : undefined field name

java - 从 Word (Docx) 读取方程式和公式到 html 并使用 java 保存数据库

java - 来自 Jetty 的 EofException

java - 在没有配置的情况下使用 Eclipse "export as Runnable Jar"

php - .htaccess。拒绝 root,允许特定的子文件夹。可能的?

linux - 将培训视频流式传输到远程办公室