使用 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
我的两个问题是:
是什么导致了这种方括号行为?
如何查询方括号内的值?
注意
在我上传的 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/