我正在使用sunspot_solr在rails上實現ruby的quickfind。我通過一些項目對象進行全文搜索,但也想搜索擁有的筆記的內容。我設置了搜索功能,以便在用戶輸入時顯示突出顯示的結果。我可以讓代碼顯示突出顯示的結果,或者在筆記中返回匹配,但不能同時返回。使用sunspot_solr突出顯示某個擁有對象的字段
代碼返回筆記結果:
在Project.rb attr_accessible:標題,說明 的has_many指出
searchable do
text :title, :boost => 5
text :description
text :notes do
notes.map(&:content)
end
end
在Project_controller.rb
def quick
unless params[:q].nil? || params[:q].empty?
@search = Project.search do
fulltext params[:q]
end
@projects = @search.results
else
@projects = Project.none
end
respond_to do |format|
format.json { render :json => @projects }
end
end
在Note.rb attr_accessible:content,:project_id belongs_to:項目
代碼突出命中,不會搜索筆記內容: Project_controller.rb
def quick
unless params[:q].nil? || params[:q].empty?
@search = Project.search do
fulltext params[:q] do
highlight :title
highlight :description
end
adjust_solr_params do |sunspot_params|
sunspot_params[:rows] = 15
end
end
@result = []
@search.each_hit_with_result do |hit, project|
@highlight = hit.highlight(nil)
@field_name = @highlight.field_name
@text = hit.highlight(nil).format { |word| "<span style='color: orange;'>#{word}</span>" }
@result << {:text => @text, :id => project.id, :fieldname => @field_name}
end
else
@result = []
end
respond_to do |format|
format.json { render :json => @result }
end
end
Project.rb和Note.rb本質上是相同的,除了我添加:stored => true
項目的標題/描述。
但是,儘管嘗試了各種選項來對筆記內容進行全文搜索,並返回筆記內容的突出顯示結果,但我似乎無法弄清楚如何。每次嘗試添加任何代碼以使筆記內容存儲和/或突出顯示時,代碼都會停止工作。這是不可能的,還是我錯過了正確的語法?
Solr的是4.2.0版本,太陽黑子是版本2.1.1