我正在使用带有 DIH jdbc 连接器的 solr 4.0。我有一个字段,该字段code
由多个值组成,用分号 (;) 分隔。我试图列出与字段查询 (fq) 匹配的搜索结果,这些结果列在顶部,其余结果列在下面。因此,这不仅仅是一个仅列出匹配查询 (fq) 的过滤查询,而且匹配的查询应该首先列出,其余结果应该稍后列出。为了更清楚,下面是一个例子,
让 id、name、code 成为字段名称:
id=1
name=pebbles
code=465;888;256
id=2
name=paradise
code=802;326;786
id=3
name=blue sea
code=888;221
id=4
name=taj
code=123;568;332
我使用 Solr Admin,当我在 fq 中搜索时code:*888*
,如下所示,
q=*:*
fq=code:*888* (I also tried code:[*888* TO *])
它只列出了两条记录(id 为 1 和 3),其中每条记录在代码字段中都与 888 匹配。但这不是我在本例中想要的,我希望它列出所有(四条)记录,并将顶部记录列为 fq 匹配记录。
我希望按以下顺序列出,
id=1
name=pebbles
code=465;888;256
id=3
name=blue sea
code=888;221
id=2
name=paradise
code=802;326;786
id=4
name=taj
code=123;568;332
有人知道吗?任何有相关指导的人都会非常有帮助!
谢谢你!
答案1
OR
有两种方法可以解决此问题,edismax
Solr 管理员:
和或者
q=*:* OR code:*888*
(http://192.168.1.10:8983/solr/core10/select?q=*%3A*+OR+code%3A*888*&wt=xml)
和埃迪斯马克斯
q=*:*
Check the box "edismax"
bq=code:*888*
(http://192.168.1.10:8983/solr/core10/select?q=*%3A*&wt=xml&defType=edismax&bq=code%3A*888*)