clear-code / redmine_full_text_search

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

Support similar issues search #35

Closed okkez closed 7 years ago

okkez commented 7 years ago

まだ権限まわりのコードを入れてないけど、2つのパターンの類似issue検索を作ってみた。 searcher_records を参照しているのと、issue_contentsを参照しているのでどちらがよりよい結果を出しているのだろう。

okkez commented 7 years ago

:memo: TODO

okkez commented 7 years ago

TODO:

okkez commented 7 years ago
require "benchmark"

issues = Issue.all
active_user = User.active.all.sample
n_issues = issues.size

times = []
issues.each do |issue|
  times << Benchmark.realtime do
    issue.similar_issues(user: active_user)
  end
end

total = times.inject(&:+)

puts "User: #{active_user.id}"
puts "records: %d, total: %.2f sec, min: %.2f ms, max: %.2f ms, average: %.2f ms" % [n_issues, total, times.min * 1000, times.max * 1000, total/n_issues * 1000]

雑にベンチマークを取ってみた。

mariadb-server 10.0.29-0ubuntu0.16.04.1 + mariadb-server-10.0-mroonga 7.05-2~xenial1

$ bin/rails r similar.rb
User: 50
records: 3457, total: 58.22 sec, min: 7.54 ms, max: 253.88 ms, average: 16.84 ms
bin/rails r similar.rb  24.85s user 2.27s system 44% cpu 1:00.67 total
2.4.1 | system
$ bin/rails r similar.rb
User: 78
records: 3457, total: 45.81 sec, min: 4.46 ms, max: 258.71 ms, average: 13.25 ms
bin/rails r similar.rb  21.36s user 1.77s system 47% cpu 48.218 total

postgresql 9.6.4-1 + PGroonga 1.2.3

$ bin/rails r similar.rb
User: 45
records: 3457, total: 48.55 sec, min: 5.60 ms, max: 260.23 ms, average: 14.04 ms
bin/rails r similar.rb  22.16s user 1.19s system 45% cpu 50.944 total
2.4.1 | system
$ bin/rails r similar.rb
User: 37
records: 3457, total: 48.83 sec, min: 5.33 ms, max: 265.98 ms, average: 14.12 ms
bin/rails r similar.rb  22.12s user 1.10s system 45% cpu 51.228 total
CPU: Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
Memory: 16GB
SSD: 256GB
okkez commented 7 years ago

今のところプロジェクトの条件は付けないことにした。 必要になったら付けることにする。