Searchkick 突出显示不必要的词

Searchkick highlights unnecessary word

我突出显示了不必要的词,例如我正在搜索 "Document CASE No. 2015-331" 这里是 searchkick 将突出显示的列表

  1. "Document CASE No. 2015-331"
  2. "Not"
  3. "no"
  4. "on"
  5. "case is"<----- 这很奇怪我不知道为什么会这样
  6. 高亮哈哈
  7. “2015”
  8. “2017”
  9. “2018”
  10. "2016"
  11. "to"
  12. "Not to"

这是我的搜索结果

    search = ::Document.search params[:q], fields: [:content], where: {id:
     params[:id]}, highlight: { tag: 'span class=match-matcher',
     fragment_size: @document.content.length}

    search.with_highlights.each do |document, highlights|

       document.content = highlights[:content]

    end

这里的目标只强调"Document CASE No. 2015-331"

索引时您的字段似乎已被分析。 如果你想实现精确匹配并且标记应该是可搜索的,映射应该是 "not_analyzed" 并且数据需要是 re-indexed.

此处您正在寻找完全匹配。

通过添加如下内容修改您字段的映射。

"mappings": {
    "properties": {
       "city": {
        "type": "text",
         "fields": {
           "raw": { 
             "type":  "keyword"
           }
          }
        }
      }
    }