7

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
4

1 に答える 1