所以我在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"
但这符合一切。我希望这是正确解释的。我甚至不知道这是否可能。
答案 0 :(得分:3)
不,不能匹配具有相同索引的两个多值字段。您需要获得所有匹配的文档,并在客户端处理它们。
但是,如果您始终拥有type
和name
的完整值,那么您可以更改架构并使其像这样工作。
定义一个名为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.*/