我是全新的...
我在apacheolr模块中使用durpal。
我有以下过滤器:
( tid:19895 OR tid:19937 ) AND type:poster"
这不会返回任何结果,但如果我有以下内容,则会按预期返回结果
( tid:19937 ) AND type:poster"
编辑:这都是过滤器。我需要有一个tids列表,它可以与类型为海报。所以它必须是类型:海报和以下一个tid:19895,19937
答案 0 :(得分:2)
虽然:
((tid:(19895 OR 19937))AND type:poster)应该工作,无论defaultOperator是OR / AND
将子句添加为单独的过滤器更好,因此添加两个过滤器
tid:(19895 OR 19937)
类型:海报
应过滤掉以AND作为结果的结果,并分别缓存此过滤器的结果,以便使用此过滤器提高新查询的查询性能。
答案 1 :(得分:0)
我认为重要的是要注意SOLR不是数据库。它是一个搜索引擎,因此不会像您可能习惯的数据库查询那样工作。
添加+意味着该字段是必需的
+tid:19895 would mean that TID field is required to equal exactly 19895
*是通配符,因此添加它意味着您的字段将包含值但不一定等于该值。
tid:19895* would mean TID field contains 19895
看起来问题是在同一个过滤器中两次定义字段???
因此,请尝试删除第二个“tid:”
在我的测试中,我这样做了: 我的SOLR查询是:
+type:poster
过滤器是:
tid:19895 OR 19937
这是另一个类似于你的stackoverflow问题,因为你显然有不同于我使用的语法。
答案 2 :(得分:0)
如果默认布尔子句为“或”,则为FYI,然后像这样给出查询 ((tid:(19895 19937))和类型:海报)这个工作正常我测试了