我是SOLR的新手,很抱歉,如果我的问题听起来很奇怪或太吵了。这是我在JSON中的对象的示例。
"id":"book2",
"cat":["fantasy"],
"pubyear_i":1996,
"title":["A Game of Thrones"],
"author":["George R.R. Martin"],
"series_s":"A Song of Ice and Fire",
"sequence_i":1,
"version":1551332807284883456},
如果我尝试根据该请求搜索特定对象,我将收到回复:
curl http://localhost:8983/solr/books/query?q=author:a&fl=title,author,cat
这不是实际的响应,但我给了所有在“作者”字段中具有“a”值的对象
"id":"book2",
"cat":["fantasy"],
"pubyear_i":1996,
"title":["A Game of Thrones"],
"author":["George R.R. Martin"],
"series_s":"A Song of Ice and Fire",
"sequence_i":1,
"version":1551332807284883456},
但如果我做了以下请求:
curl http://localhost:8983/solr/books/query?q=pubyear_i:19&fl=title,author,cat
除非我输入通过“pubyear_i”字段使用的确切数据,否则我不会得到任何正确的答复。
所以我无法在“pubyear_i”字段中找到所有值为“19”的对象。
有什么问题????
另外,我想提一下查询星号符号之间的关键值,但遗憾的是它们不会显示在这里。
答案 0 :(得分:0)
使用模糊字符串匹配技术。使用~
并指定要匹配的字符数。
q=pubyear_i:19~2
这是因为您的字段pubyear_i
将值存储为单个字符串。如果在索引时使用n-gram(n = 2),则值1996也将存储为19,99,96。然后你可以使用q = pubyear_i:19