我想搜索类似于Solr 4.5.1上的mysql中的IN运算符
我希望以下工作
fk_brand:(1615 928 1457 9 820 1349 414 811 1272)
但事实并非如此。想知道我试过的数据可能有问题
fk_brand:(1615)
哪个有效!有什么想法改变了吗?
我的原始查询(不起作用)
/select?q=*%3A*&fq=date_expires%3A%5BNOW+TO+*%5D&fq=fk_brand%3A(1615+928+1457+9+820+1349+414+811+1272)&sort=computed_ranking+DESC&rows=20&wt=json&indent=true&group=true&group.field=fk_brand&group.limit=3
好吧,我发现了为什么它不起作用。这是查询的调试。它使用AND运算符,我希望它使用OR。
parsed_filter_queries": [
"date_expires:[2013-12-09T16:11:38.875Z TO *]",
"+fk_brand:1615 +fk_brand:928 +fk_brand:1457 +fk_brand:9 +fk_brand:820 +fk_brand:1349 +fk_brand:414 +fk_brand:811 +fk_brand:1272"
我的默认运算符定义为AND。可能是它使用定义为默认的运算符?无论如何,我怎样才能实现这一目标?
将schema.xml中的默认运算符更改为OR,它按预期工作。但是,如果我想将默认运算符保持为AND,我怎么能指向查询解析器/构建器,他应该在那里使用OR运算符?
Nailed it:D 如果其他人面临类似的问题,答案是
fk_brand:(1615 OR 928 OR 1457 OR 9 OR 820 OR 1349 OR 414 OR 811 OR 1272)
使用OR运算符而不是空格(由于DEFAULT SEPARATOR是空格而被标识为DEFAULT OPERATOR)。