在同一位置搜索多值字段

时间:2013-02-28 03:51:51

标签: solr

假设我们有一个这样的文件:

<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模式以允许我想要的搜索?

2 个答案:

答案 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编码。)