【问题标题】:Searchkick without stemming没有词干的 Searchkick
【发布时间】:2015-01-09 15:24:00
【问题描述】:

我正在使用 searchkick (https://github.com/ankane/searchkick) 作为数组索引我的一些数据,它几乎可以正常工作:)

def search_data
  {isbn: isbn, 
   title: title, 
   abstract_long: abstract_long,
   authors: authors.map(&:name)}
end

我感兴趣的领域是作者。 我想要完成的是搜索“Marias”并找到所有实际上在他们的姓氏中具有确切字符串的作者,例如(Javier Marias),而不是 Searchkick 返回的所有 Maria/Mario/Marais,并将它们与一个更大的优先事项。

这就是我现在的搜索方式

Book.search(@search_key,
            fields: [:authors, :title, {isbn: :exact}],
            boost_by: {authors: 10, title: 5, isbn: 1})

这可能吗? TIA

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch searchkick


    【解决方案1】:

    在 Elasticsearch 中,它有一个常规匹配来处理这种情况,但被 Searchkick 放弃了。 对于这种情况,您可以选择绕行方式:

    def search_data
      {
        isbn: isbn, 
        title: title, 
        abstract_long: abstract_long,
        author_ids: authors.map(&:id)
      }
    end
    

    搜索:

    author_ids = Author.where(surname: 'Marias').map(&:id)
    Book.search(
      @search_key,
      where: {author_ids: {in: author_ids}},
      fields: [:title, {isbn: :exact}],
      boost_by: {title: 5, isbn: 1}
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 2012-12-18
      • 1970-01-01
      相关资源
      最近更新 更多