我有一个由多个字段组成的搜索索引,应该从多个应用程序中使用。例如,假设我有以下字段:
字段A,B,C的值由ApplicationX提供,而字段D和E的值由ApplicationY提供。在从ApplicationX进行搜索时,我想从字段A,B,C中获取结果,当我从ApplicationY搜索时,我希望从B,C,D,E中搜索。
我尝试过这样的事情,其中str
是一个包含我的搜索字符串的变量:
A:(str) B:(str) C:(str)
这个问题是在输入像A:monkey
这样的搜索字符串时,我得到了
A:(A:monkey) B:(A:monkey) C:(A:Monkey)
而非A:monkey
。
有没有办法查询SOLR,以便它只返回特定字段的匹配,同时保留在我的应用程序中编写SOLR语法查询的可能性?
答案 0 :(得分:0)
只要您使用edismax并使用qf
,查询中的特定字段名称就会覆盖qf
中提供的字段名称。
对于有关App1的查询,请指定qf=A B C
,而对于App2则指定qf=B C D E
。如果您针对特定字段(即A:monkey
)提交查询,则qf参数将被忽略。