gpt4 book ai didi

ruby-on-rails - Searchkick 提升精确匹配

转载 作者:行者123 更新时间:2023-11-29 02:48:39 25 4
gpt4 key购买 nike

我有 15,000 门类(class),我想提高每个类(class)的标题,这样一门类(class)的精确匹配就会高于其他一切。

当我做 Course.seach_kick('theory of interest' , 1)返回正确的搜索结果,类(class)“感兴趣的理论”作为第一个结果。

但是,当我执行 Course.search_kick('theory of interest 3618', 1)
3618 是 catalog_number,没有返回结果。预料到兴趣类(class)的理论会被退回,并且先退回。似乎搜索正在寻找包含在类(class)标题中的完整字符串“theory of interest 3618”。

我了解“and”是默认运算符,是否要求我必须使用“or”运算符?由于出现意外结果,我对使用“或”运算符犹豫不决。

谢谢,我真的很喜欢使用 gem。

搜索方法:

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

最佳答案

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

search(query,
fields: ["title^10", "description", "crse_id", "subject" ],
facets: [:subject],
misspellings: false,
where: {catalog_number: 3618},
page: page,
per_page: 20
)

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

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

关于ruby-on-rails - Searchkick 提升精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com