15,000 のコースがあり、各クラスのタイトルをブーストして、クラスの正確な一致が他の何よりもブーストされるようにしたいと考えています。
Course.seach_kick('theory of interest' , 1) を実行すると、正しい検索が返され、最初の結果としてコース 'theory of Interest' が返されます。
ただし、Course.search_kick('theory of interest 3618', 1)
3618 を catalog_number にすると、結果が返されません。私は興味の理論コースが返されることを期待し、最初に返されました。検索は、コースのタイトルに含まれる完全な文字列「関心の理論 3618」を探しているようです。
「and」がデフォルトの演算子であることは理解しています。「or」演算子を使用する必要がありますか? 予期しない結果が生じるため、「or」演算子の使用をためらっています。
ありがとう、私は宝石を使って本当に楽しんでいます。
検索方法:
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