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

标签 java apache search solr full-text-search

使用 Apache Solr 的浏览器搜索工具(在本地主机上)时,当我查询 *:* (返回全部)时,GET 请求返回以下格式的结果:

  "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 不返回任何内容。

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

我的两个问题是:

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

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

注意

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

[{“id”:1,“姓名”:“玛丽亚·阿特金森”,“电子邮件”:“krandolph@yahoo.com”,“电话号码”:“(408)500-6026x750”,“密码": "密码"}, ...

最佳答案

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

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

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

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

关于java - 使用括号中的 JSON 值查询 Apache Solr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56855688/

相关文章:

MySQL - 通过部分单词匹配和相关性评分进行高效搜索(全文)

C# 通过 T 的成员二进制搜索列表 <T>

python - 检查另一个字符串中存在的匹配字符串的有效方法

java - 我的 jsp 找不到我的 servlet,给我一个 404

java - 想知道java中的ActiveX控件替代品

php - 在此服务器上找不到请求的 URL/phpmyadmin/

python - 如何仅使用 .pyo 文件(没有 .py)来使用 mod_wsgi?

java - EJB 计时器是否应该持久/可靠?

java - 如果从InputStream保存文件期间发生错误,删除文件是否安全?

apache - Perl 不允许写入文件