假设我们有一个这样的文件:
<arr name="pvt_rate_type">
<str>CORPORATE</str>
<str>AGENCY</str>
</arr>
<arr name="pvt_rate_set_id">
<str>1</str>
<str>2</str>
</arr>
现在我只想在文件中包含pvt_rate_set_id = 1和pvt_rate_type = AGENCY在其多值字段中的相同位置时,我想要返回文档,因此不应返回上述文档(因为pvt_rate_set_id 1有一个pvt_rate_type of CORPORATE)
这在SOLR中是否可行?或者我的架构设计错误?你怎么设计tat模式以允许我想要的搜索?
答案 0 :(得分:1)
这可能无法开箱即用。
您需要修改架构,使pvt rate类型的字段为字段名称,id为其值
e.g。
CORPORATE=1
AGENCY=2
这可以通过定义dynamic fields来实现。
e.g。
<dynamicField name="*_pvt_rate_type" type="string" indexed="true" stored="true"/>
因此,您可以使用相应的值输入corporate_pvt_rate_type或agency_pvt_rate_type数据。
过滤器查询将能够匹配精确的映射fq=corporate_pvt_rate_type:1
答案 1 :(得分:0)
不幸的是Solr似乎不支持这个。
在Solr中执行此操作的另一种方法是存储连接字符串字段type_and_id
,其中分隔符(例如逗号)将类型和ID分隔开来,如下所示:
q=type_and_id:AGENCY%2C1
(其中%2C
是逗号的URL编码。)