我将 sphinx 与 rails 一起使用,似乎除了我指定为索引的列之外,Sphinx 还搜索模型名称,并将其添加到摘录单词列表中。
例如,我有一个名为“事件”的模型。如果我搜索“舞蹈”,如果它出现在任何索引字段中,我的结果也会突出显示“事件”一词,即“舞蹈事件”将被突出显示,而不仅仅是“舞蹈”。知道如何阻止这种行为吗?
编辑:
编辑:我意识到这在搜索自动完成窗口中没有发生,因为 ajax-y 搜索路线的搜索方式不同:
results = ThinkingSphinx.search(params[:search], {:star => true})
results.context[:panes] << ThinkingSphinx::Panes::ExcerptsPane
摘录不正确的搜索结果在特定型号上(见下文)
这是代码,:
event_index.rb
ThinkingSphinx::Index.define :event, :with => :active_record do
indexes title
indexes subtitle
indexes vendor.name, :as => :event_vendor
indexes vendor.city, :as => :event_city
indexes genre.name, :as => :genre_name
set_property :min_prefix_len => 3
set_property :enable_star => true
end
vendor_index.rb
ThinkingSphinx::Index.define :vendor, :with => :active_record do
indexes :name
indexes city, :as => :city
set_property :min_prefix_len => 3
set_property :enable_star => true
end
search_controller.rb
def index
@events = Event.search params[:search], {:star => true , :per_page => 5, :page => params[:events_page]}
@events.context[:panes] << ThinkingSphinx::Panes::ExcerptsPane
@vendors = Vendor.search params[:search], {:star => true , :per_page => 5, :page => params[:vendors_page]}
@vendors.context[:panes] << ThinkingSphinx::Panes::ExcerptsPane
end
和一个事件结果部分,_event.html.erb
<div class="event">
<table>
<tr>
<td class="image">
<% if event.image? %>
<%= image_tag event.image_url(:mid).to_s %>
<% else %>
<img src='http://lorempixel.com/100/100/abstract/<%= (1..10).to_a.sample %>' />
<% end %>
<div class="genre_img">
<%= image_tag event.genre.image_url().to_s %>
</div>
</td>
<td class="body">
<%= event.excerpts.to_yaml %>
<h3><%= link_to ( raw event.excerpts.title), event_path(event) %></h3>
<p class="bold"> <%= raw event.excerpts.subtitle %> </p>
<p class="bold"> Genre: <%= raw event.excerpts.genre_name %> </p>
<p class="bold"><%= link_to ( raw event.excerpts.vendor_name), vendor_path(event.vendor) %></p>
<p class="bold"> <%= raw event.excerpts.vendor_city %> </p>
</td>
</tr>
</table>
</div>
我环顾四周,似乎无法弄清楚 - 我敢肯定在我错过的某个地方有一个选择。任何帮助将不胜感激,谢谢!