SOLR查询查找少于7个字符

时间:2017-01-20 21:53:04

标签: arrays solr

我正在查询SOLR数据。其中一个字段是一个看起来像这样的数组(有很多记录,这只是第一个):

    "office_address_line1": [
      "Po",
      "317 S Drexel Blvd #330",
      "35 Village Plaza",
      "2215 Carol Ave",
      "35 Drexel BLVD",
      "158 Connecticut Ave"
    ]
  }

请注意,一行只是" Po"。还有其他条目的值类似于" Po Box 7"和#34; Po Box 70"等

首先,如果我想找到Po,我确实做 office_address_line1:Po ,但不是完全匹配,而是从Po开始。如果我 office_address_line1:" Po Box 7" ,它只会获得7而不是70.

首先,我想弄清楚为什么会这样。但更重要的是,我需要找到少于7个字符的地址。我尝试各种各样的事情,比如/.{6}/或/.{1,7}/和/^.{1,7}$/甚至!office_address_line1:/。{7,100} /但没有什么能回报我想要的东西。指定范围会返回该范围内外的内容。

所以我想知道为什么 office_address_line1:" Po" 不会返回完全匹配的地方。其次,我想知道为什么我的范围查询没有返回我想要的内容。我必须阅读Google为SOLR查询提出的所有内容。

我有一个问题。由于它是一个字符串数组,查询是否必须匹配数组中的每一行?否则,我应该做什么样的查询?如果情况变得更糟,因为我说应该只有" Po"但那个查询也不起作用。

1 个答案:

答案 0 :(得分:0)

由于text是你的字段类型,因此字段在空格上被标记化。 因此,您的查询office_address_line1:"Po"将返回所有具有令牌" Po"的文档。 对于长度小于7的字段,请尝试office_address_line1:/.{1,7}./。但要使此查询生效,您的office_address_line1字段应编入索引(作为单个标记)。

您可以使用solr <copyfield>标记将此字段的副本另存为字符串,并在该复制的字段上运行您的范围查询。