我正在使用 PG Search 允許用戶輸入查詢并搜索模型上的幾個不同屬性。我有以下型號;
class Movie < ApplicationRecord
include PgSearch::Model
pg_search_scope :search_for,
against: { title: 'A', short_description: 'B', long_description: 'C' },
using: { tsearch: { prefix: true } }
end
這意味著您可以執行以下操作;
Movie.search_for("person")它會找到在標題、short_description 和 long description 中包含單詞 person 的結果。但是,它似乎沒有以任何合乎邏輯的方式進行分組……結果感覺非常隨機。
最終我希望它按反對哈希分組。所以首先是標題,然后是簡短描述,然后是詳細描述。這意味著所有標題中包含“人”的標題都在串列的頂部,然后是短描述,然后是長描述,并且那些查詢超過一個的標題排名更高。所以如果查詢是在標題和簡短描述中,它會在標題中包含它的上方。
或者,如果它在簡短描述中出現了 10 次,但根本不在標題中……標題中帶有它的那些應該仍然更高……某種加權系統?
如何做到這一點?
謝謝!
uj5u.com熱心網友回復:
您的代碼示例是由反對元素加權,首先是標題,其次是 short_description,等等。
您應該考慮實施ranked_by以進一步將您的結果調整為您想要的輸出。
該pg_search_rank方法對除錯特別有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452369.html
