查询Solr中多值字段中的特定索引值

时间:2014-08-21 09:50:51

标签: solr

所以我在Solr文档中有以下多字段(只是一个例子)。

"type": [
    "Single",
    "Series",
    "Other association"
],
"name": [
    "Name associated with first type",
    "Name associated with second type",
    "Name associated with third type"
]

我可以使用以下方法查询这两个字段:

name:"Name associated with third type" AND type:"Series"

但我需要查询name的值,并匹配同一数组索引中的type值。因此,上面的示例不应该点击,因为“与第三类型相关联的名称”是第三个name“系列”type中的第二个。< / p>

应该产生命中的查询是这样的,因为两个值都在同一个数组索引中。

name:"Name associated with second type" AND type:"Series"

但这符合一切。我希望这是正确解释的。我甚至不知道这是否可能。

1 个答案:

答案 0 :(得分:3)

不,不能匹配具有相同索引的两个多值字段。您需要获得所有匹配的文档,并在客户端处理它们。

但是,如果您始终拥有typename的完整值,那么您可以更改架构并使其像这样工作。

定义一个名为type_names的新字段,它是一个多值字符串字段。修改索引器以在该字段中设置值,如

type_names: [Single#Name associated with first type,
             Series#Name associated with second type,
             Other association#Name associated with third type]

我正在使用#,但您可以使用适合您的任何分隔符字符串。

(如果您想要不区分大小写的匹配以及小写查询值,您可能希望小写索引中的所有内容。)

然后查询此字段,如:

type_names:(Series#Name associated with second type)

如果恰好您知道type的完整值,但只知道name中的一个字(例如second),那么您可以使用正则表达式匹配:

type_names:/Series#.*second.*/