允许通过SOLR / CURL根据字段参数进行查询

时间:2016-11-21 09:33:18

标签: curl solr

我是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”的对象。

有什么问题????

另外,我想提一下查询星号符号之间的关键值,但遗憾的是它们不会显示在这里。

1 个答案:

答案 0 :(得分:0)

使用模糊字符串匹配技术。使用~并指定要匹配的字符数。

q=pubyear_i:19~2

这是因为您的字段pubyear_i将值存储为单个字符串。如果在索引时使用n-gram(n = 2),则值1996也将存储为19,99,96。然后你可以使用q = pubyear_i:19