首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Searchkick加速精确匹配

Searchkick加速精确匹配
EN

Stack Overflow用户
提问于 2014-08-28 22:33:04
回答 1查看 1.9K关注 0票数 7

我有15,000门课程,我想提升每个课程的标题,这样一个课程的精确匹配就会高于其他任何东西。

当我做Course.seach_kick(“兴趣理论”)时,1)返回正确的搜索结果,第一个结果是课程“兴趣理论”。

然而,当我做Course.search_kick(‘感兴趣的理论3618',1)

3618为catalog_number,则不返回任何结果。我期待着利息课程理论的回归,并首先回归。搜索似乎是在寻找完整的字符串“感兴趣的理论3618”包含在课程的标题中。

我知道'and‘是默认的运算符,我必须使用'or’运算符吗?我很犹豫是否使用'or‘运算符,因为出现了意想不到的结果。

谢谢,我真的很喜欢用宝石。

搜索方法:

代码语言:javascript
复制
def self.search_kick(query, page)
  search(query,
         fields: ["title^10", "description", "crse_id", "subject", "catalog_number" ],
         facets: [:subject],
         misspellings: false,
         page: page,
         per_page: 20
         )
end

def search_data
  {
    title: title,
    description: description,
    crse_id: crse_id,
    subject: subject,
    catalog_number: catalog_nbr
  }
end
EN

回答 1

Stack Overflow用户

发布于 2014-12-14 16:31:24

为什么不在where子句中过滤catalog_number:

代码语言:javascript
复制
search(query,
     fields: ["title^10", "description", "crse_id", "subject" ],
     facets: [:subject],
     misspellings: false,
     where: {catalog_number: 3618},
     page: page,
     per_page: 20
     )

在大多数情况下,where子句来自IF:

代码语言:javascript
复制
conditions = {}
if params[:catalog_number].present?
    conditions[:catalog_number] = params[:catalog_number].to_i
end
search(query,
     fields: ["title^10", "description", "crse_id", "subject" ],
     facets: [:subject],
     misspellings: false,
     where: conditions,
     page: page,
     per_page: 20
     )

可以在where子句中插入尽可能多的过滤器,就像ActiveRecord.where()一样。

文档编号:https://github.com/ankane/searchkick#queries

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25551425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档