使用括号中的 JSON 值查询 Apache Solr

Querying Apache Solr with JSON values in brackets

当使用 Apache Solr 的浏览器搜索工具(在 localhost 上)时,当我查询 *:* (return all) 时,GET 请求 returns 的结果格式如下:

  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":12,
    "params":{
      "q":"*:*",
      "_":"1562080387377"}},
  "response":{"numFound":164,"start":0,"maxScore":1.0,"docs":[
      {
        "id":"1",
        "name":["Maria Atkinson"],
        "email":["krandolph@yahoo.com"],
        "phone_number":["(408)500-6026x750"],
        "password":["password"],
        "_version_":1637959617282572288},

所有值都在方括号中。

这是个问题,因为我无法根据查询名称获取结果,例如询问 select?q=Maria return没什么。

我在终端中使用以下命令对 JSON 文件进行了 POST 请求: bin/post -c techproducts /Users/**/Desktop/**/upload.json

我的两个问题是:

  1. 是什么导致了这种方括号行为?

  2. 如何查询方括号中的值?

注意

在我上传的JSON文件中,没有用方括号括起来的值,格式如下:

[{"id": 1, "name": "Maria Atkinson", "email": "krandolph@yahoo.com", "phone_number": "(408)500-6026x750", "password": "password"}, ...

检查你的 schema.xml。这些字段必须将多值设置为 true。将相同的更改为 false。 为所有字段更改 schema.xml 中的 multiValued=false 后。 重新索引数据。

MultiValued 在架构中定义字段是否允许有多个值。例如:如果我有一个名为 ID 的字段类型,它是 multiValued=true 索引这样的文档:doc { id : [ 1, 2] ... }.

将字段标记为 multiValued=false。重新索引数据。

您的搜索问题将得到解决。

补充 Abhijit 和 MatsLindh 的答案,Solr 的默认字段是文本,如 Solr docs 中所定义。由于我没有定义字段,它默认为文本。

但是,在我的索引文档中没有名为 text 的字段,因此没有返回任何内容。