3

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

<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 为 CORPORATE )

这在 SOLR 中是否可能?还是我的架构设计不当?您将如何设计 tat 架构以允许我想要的搜索?

4

2 回答 2

1

这可能不是开箱即用的。
您需要修改架构以将 pvt rate 类型的字段作为字段名称,将 id 作为其值

例如

CORPORATE=1
AGENCY=2

这可以通过定义动态字段来实现。

例如

<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

于 2013-02-28T04:05:23.463 回答
0

不幸的是,Solr 似乎不支持这一点。

在 Solr 中执行此操作的另一种方法是存储连接字符串字段type_and_id,并使用分隔符(例如逗号)分隔类型和 id 和查询,例如:

q=type_and_id:AGENCY%2C1

%2C逗号的 URL 编码在哪里)。

于 2013-02-28T05:31:43.143 回答