1

我想按书名搜索一本书。假设我有两本书叫

"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。

4

1 回答 1

1

您的查询似乎是一个短语查询,即BOOK_NAME:"Please*search"而不是BOOK_NAME:Please*search. 这将尝试找到确切的短语Please*search

另外,除非您以将整个标题保留为令牌的方式对 BOOK_NAME 进行索引,否则我认为该查询不会起作用。尝试将字段索引为字符串,或者尝试使用ComplexPhraseQueryParser

ComplexPhraseQParser 使用 Lucene 的 ComplexPhraseQueryParser 在短语查询中提供对通配符、OR 等的支持。在幕后,这个查询解析器使用了 Span 查询组,例如 spanNear、spanOr 等,并且受到与该家族或解析器相同的限制

{!complexphrase inOrder=true}BOOK_NAME:"Please*search"或者{!complexphrase inOrder=true}BOOK_NAME:"Please * search"

于 2016-05-27T10:59:30.677 回答