我想按书名搜索一本书。假设我有两本书叫
"Please do a wildcard search"
"Please do a deep search"
然后我进行如下所示的 solr 通配符搜索:
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"q":"BOOK_NAME:"Please*search"",
"indent":"on",
"wt":"json"}},
"response":{"numFound":0,"start":0,"docs":[]
}}
我期待这次搜索的 2 本书,但找到的文档数量为 0
参考我找到了通配符搜索:
我正在使用 solr 6。
您的查询似乎是一个短语查询,即BOOK_NAME:"Please*search"
而不是BOOK_NAME:Please*search
。这将尝试找到确切的短语请*搜索
此外,我认为除非您以保留整个标题作为令牌的方式为BOOK_NAME编制索引,否则查询将不起作用。尝试将字段索引为字符串,或者尝试使用 ComplexPhraseQueryParser
ComplexPhraseQParser提供对通配符,OR等的支持, 内部短语查询使用 Lucene 的 ComplexPhraseQueryParser 。下 封面,这个查询解析器利用了 Span 组的查询, 例如,spanNear,spanOr等,并受到相同的限制 作为该系列或解析器
{!complexphrase inOrder=true}BOOK_NAME:"Please*search"
或{!complexphrase inOrder=true}BOOK_NAME:"Please * search"