代码之家  ›  专栏  ›  技术社区  ›  Nishutosh Sharma

使用索引和值搜索子数组以返回solr中的文档

  •  0
  • Nishutosh Sharma  · 技术社区  · 6 年前

    我有以下格式的数据集,我希望它可以通过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笔记本电脑。任何帮助都将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  0
  •   MatsLindh    6 年前

    如果只执行完全匹配,请将索引作为值的一部分对值进行索引,并使用字符串/未处理字段类型:

    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 .