作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 solr5.0.0。我想知道等效的查询IN
在 solr 或 solrj 中。
如果我需要查询不同品牌的产品,可以使用IN子句。如果我有戴尔、索尼、三星等品牌。我需要使用 Solr 和 Java Solrj 找到这些品牌的产品。
现在我在 Solrj 中使用这段代码
qry.addFilterQuery("brand:dell OR brand:sony OR brand:samsung");
我知道我可以在这里使用 OR,但需要了解 Solr 中的 IN。以及OR的表现。
最佳答案
您可以在 Solr 的 wiki 中读到关于 its' query syntax 的信息, Solr 默认使用 Lucene's Query parser 的超集.正如您在阅读这两个文档时所看到的,不存在类似 IN 的内容。但是您可以比您提供的示例查询更短。
如果您的默认运算符是 OR,您可以将其从查询中删除。此外,您可以使用 Field Grouping .
qry.addFilterQuery("brand:(dell sony samsung)");
如果 OR 不是您的默认运算符或您不确定这一点,您可以为过滤器查询使用本地参数,以便强制执行 OR。之后您可以再次使用字段分组。
qry.addFilterQuery("{!q.op=OR}brand:(dell sony samsung)");
请记住,您需要用 "
将一个短语括起来以将单词放在一起
qry.addFilterQuery("{!q.op=OR}brand:(dell sony samsung \"packard bell\")");
关于java - IN Solr 和 Solrj 中的等效查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29410240/
我是一名优秀的程序员,十分优秀!