Search engine: search can be restricted to an exact phrase by using quotation marks (eg. hello "bye bye" can be used to search for "hello" and "bye bye" strings).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@935 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
233990dac3
commit
bf6e02c739
|
@ -52,8 +52,11 @@ class SearchController < ApplicationController
|
||||||
@object_types = @scope = %w(projects)
|
@object_types = @scope = %w(projects)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# extract tokens from the question
|
||||||
|
# eg. hello "bye bye" => ["hello", "bye bye"]
|
||||||
|
@tokens = @question.scan(%r{((\s|^)"[\s\w]+"(\s|$)|\S+)}).collect {|m| m.first.gsub(%r{(^\s*"\s*|\s*"\s*$)}, '')}
|
||||||
# tokens must be at least 3 character long
|
# tokens must be at least 3 character long
|
||||||
@tokens = @question.split.uniq.select {|w| w.length > 2 }
|
@tokens = @tokens.uniq.select {|w| w.length > 2 }
|
||||||
|
|
||||||
if !@tokens.empty?
|
if !@tokens.empty?
|
||||||
# no more than 5 tokens to search for
|
# no more than 5 tokens to search for
|
||||||
|
@ -93,7 +96,6 @@ class SearchController < ApplicationController
|
||||||
# if only one project is found, user is redirected to its overview
|
# if only one project is found, user is redirected to its overview
|
||||||
redirect_to :controller => 'projects', :action => 'show', :id => @results.first and return if @results.size == 1
|
redirect_to :controller => 'projects', :action => 'show', :id => @results.first and return if @results.size == 1
|
||||||
end
|
end
|
||||||
@question = @tokens.join(" ")
|
|
||||||
else
|
else
|
||||||
@question = ""
|
@question = ""
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue