clear-code / redmine_full_text_search

Full text search for Redmine
MIT License
63 stars 24 forks source link

Support weight #6

Closed kou closed 7 years ago

kou commented 7 years ago

タイトル(issueならsubject)にキーワードが含まれていた場合は本文に含まれている場合よりも高いスコアーにして欲しい。理由はタイトルに含まれている方がより目的の項目である可能性が高いから。

kou commented 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

みたいにする。

okkez commented 7 years ago

813f7a86 で大体できた。 カラムごとのスコアの調整は要検討。

okkez commented 7 years ago

カラムごとのスコアの調整は、具体的な提案があれば検討する。