Commit 05f285a9 by Kevin Chugh

limit the number of comments searched, prepare for ES and Tire upgrade to allow…

limit the number of comments searched, prepare for ES and Tire upgrade to allow indexing comments comment_thread_id
parent 7fc690b5
...@@ -251,7 +251,7 @@ namespace :db do ...@@ -251,7 +251,7 @@ namespace :db do
i.delete if i.exists? i.delete if i.exists?
end end
else else
puts "[IMPORT] no aliases found. deleting index. creating new one and setting up alias." puts "[IMPORT] no aliases found. deleting index. Creating new one for #{klass} and setting up alias."
klass.tire.index.delete klass.tire.index.delete
a = Tire::Alias.new a = Tire::Alias.new
a.name(klass.tire.index.name) a.name(klass.tire.index.name)
......
...@@ -49,8 +49,8 @@ DEFAULT_PER_PAGE = 20 ...@@ -49,8 +49,8 @@ DEFAULT_PER_PAGE = 20
if RACK_ENV.to_s != "test" # disable api_key auth in test environment if RACK_ENV.to_s != "test" # disable api_key auth in test environment
before do before do
#duct tape to avoid 401 on deep search performance test #duct tape to avoid 401 on deep search performance test
error 401 unless params[:api_key] == CommentService.config[:api_key] or true #error 401 unless params[:api_key] == CommentService.config[:api_key] or true
#error 401 unless params[:api_key] == CommentService.config[:api_key] error 401 unless params[:api_key] == CommentService.config[:api_key]
end end
end end
......
...@@ -5,3 +5,4 @@ elasticsearch_server: <%= ENV['SEARCH_SERVER'] || 'http://localhost:9200' %> ...@@ -5,3 +5,4 @@ elasticsearch_server: <%= ENV['SEARCH_SERVER'] || 'http://localhost:9200' %>
cache_timeout: cache_timeout:
threads_search: 10 threads_search: 10
threads_query: 10 threads_query: 10
max_deep_search_comment_count: 5000
...@@ -5,6 +5,16 @@ development: ...@@ -5,6 +5,16 @@ development:
hosts: hosts:
- localhost:27017 - localhost:27017
development2:
sessions:
default:
database: comments-prod-clone
hosts:
- charlotte.mongohq.com:10035
username: kevinchugh@edx.org
password: charlie123
test: test:
sessions: sessions:
default: default:
......
...@@ -25,6 +25,8 @@ class Comment < Content ...@@ -25,6 +25,8 @@ class Comment < Content
mapping do mapping do
indexes :body, type: :string, analyzer: :snowball, stored: true, term_vector: :with_positions_offsets indexes :body, type: :string, analyzer: :snowball, stored: true, term_vector: :with_positions_offsets
indexes :course_id, type: :string, index: :not_analyzed, included_in_all: false indexes :course_id, type: :string, index: :not_analyzed, included_in_all: false
#indexes :comment_thread_id, type: :string, stored: true, index: :not_analyzed, included_in_all: false
#current prod tire doesn't support indexing BSON ids, will reimplement when we upgrade
end end
......
...@@ -155,6 +155,7 @@ class CommentThread < Content ...@@ -155,6 +155,7 @@ class CommentThread < Content
search = Tire::Search::Search.new 'comments' search = Tire::Search::Search.new 'comments'
search.query {|query| query.text :_all, params["text"]} if params["text"] search.query {|query| query.text :_all, params["text"]} if params["text"]
search.filter(:term, course_id: params["course_id"]) if params["course_id"] search.filter(:term, course_id: params["course_id"]) if params["course_id"]
search.size CommentService.config["max_deep_search_comment_count"].to_i
#unforutnately, we cannot paginate here, b/c we don't know how the ordinality is totally #unforutnately, we cannot paginate here, b/c we don't know how the ordinality is totally
#unrelated to that of threads #unrelated to that of threads
...@@ -162,10 +163,15 @@ class CommentThread < Content ...@@ -162,10 +163,15 @@ class CommentThread < Content
c_results = search.results c_results = search.results
comment_ids = c_results.collect{|c| c.id}.uniq comment_ids = c_results.collect{|c| c.id}.uniq
comments = Comment.where(:id.in => comment_ids) comments = Comment.where(:id.in => comment_ids)
thread_ids = comments.collect{|c| c.comment_thread_id} thread_ids = comments.collect{|c| c.comment_thread_id}
#thread_ids = c_results.collect{|c| c.comment_thread_id}
#as soon as we can add comment thread id to the ES index, via Tire updgrade, we'll
#use ES instead of mongo to collect the thread ids
#use the elasticsearch index instead to avoid DB hit
original_thread_ids = results.collect{|r| r.id} original_thread_ids = results.collect{|r| r.id}
#now add the original search thread ids #now add the original search thread ids
......
...@@ -35,6 +35,7 @@ describe "app" do ...@@ -35,6 +35,7 @@ describe "app" do
if user.nil? if user.nil?
user = create_test_user(1) user = create_test_user(1)
end end
commentable = Commentable.new("question_1") commentable = Commentable.new("question_1")
random_string = (0...8).map{ ('a'..'z').to_a[rand(26)] }.join random_string = (0...8).map{ ('a'..'z').to_a[rand(26)] }.join
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment