使用括号中的 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
我的两个问题是:
是什么导致了这种方括号行为?
如何查询方括号中的值?
注意
在我上传的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 的字段,因此没有返回任何内容。
当使用 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
我的两个问题是:
是什么导致了这种方括号行为?
如何查询方括号中的值?
注意
在我上传的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 的字段,因此没有返回任何内容。