我具有以下格式的以下数据集,并且希望可以通过solr进行搜索。下面的示例每个文档的外观如何。
{
'key': <unique key>,
'val_arr': [
['laptop', 'macbook pro', '16gb', 'i9', 'spacegrey'],
['cellphone', 'iPhone', '4gb', 't2', 'rose gold'],
['laptop', 'macbook air', '8gb', 'i5', 'black'],
['router', 'huawei', '10x10', 'white'],
['laptop', 'macbook', '8gb', 'i5', 'silve']
]
}
我将获得带有元素值及其索引(每个请求2个元素)的搜索请求。
例如。 index1=0, val1=laptop, index2=2, val2=16gb
,与上述给定文档中的数组之一匹配,因此将整个文档提取到搜索结果中。
我尝试使用copyField和自定义查询解析器,但会搜索跨子数组,即可能会获取4GB手机的笔记本电脑,而请求可能是4GB笔记本电脑。任何帮助将不胜感激。
答案 0 :(得分:0)
如果您仅执行完全匹配,请使用索引作为值的一部分来索引值,并使用字符串/未处理的字段类型:
val_arr: ["0_laptop", "1_macbook pro", "2_16gb", ...]
可以使用确切的索引,值组合-val_arr:0_laptop AND val_arr:2_16gb
来查询。
如果您需要对该字段进行常规匹配(和处理/标记化),则可以使用动态字段名称代替:
"val_arr_0": "laptop",
"val_arr_1": "macbook pro",
"val_arr_2": "16gb",
..
然后查询字段-val_arr_0:laptop AND val_arr_2:16gb
。