Closed kou closed 7 years ago
カラム毎に重みを変えるには、まず、マルチカラムインデックスをやめる。マルチカラムインデクスではすべてのカラムを同じように扱ってしまうから。
マルチカラムインデックスをやめるには次のようにするとよさそう。
まず、新しくマイグレーションファイルを作る。
次に↑で↓みたいにする。
drop_index(:fts_projects, [:name, :identifier, :description])
add_index(:fts_projects, :name, type: "fulltext")
add_index(:fts_projects, :identifier, type: "fulltext")
add_index(:fts_projects, :description, type: "fulltext")
# ...
lib/full_text_search/mroonga.rb
を次のように変える。
WHERE MATCH(name, identifier, description)
みたいなのを
WHERE MATCH(name) ... OR
MATCH(identifier) ... OR
MATCH(description)
みたいにする。
SELECT ..., MATCH(name) ... as score
みたいなのを
SELECT ..., MATCH(name) ... * 100 +
MATCH(identifier) ... * 100 +
MATCH(description) ...
as score
みたいにする。
813f7a86 で大体できた。 カラムごとのスコアの調整は要検討。
カラムごとのスコアの調整は、具体的な提案があれば検討する。
タイトル(issueなら
subject
)にキーワードが含まれていた場合は本文に含まれている場合よりも高いスコアーにして欲しい。理由はタイトルに含まれている方がより目的の項目である可能性が高いから。