Ultrasphinx и Rails: совершенно неверные результаты - почему?
Я использую Ultrasphinx для поиска в приложении Rails. Кажется, все работает, единственное, что результаты поиска никак не соответствуют поисковому запросу. Я действительно не понимаю этого. Я перестраивал свои индексы и конфигурационные файлы несколько раз, и, похоже, ничего не работает. Когда я выполняю поиск по запросу "test", я получаю результаты без слова "test" в любом столбце.
Это происходит только на моем производственном сервере. В среде разработки все работает отлично.
Я не знаю, какую информацию вам предоставить, я просто вставляю свои настройки в модели и контроллеры.
# models/video.rb
is_indexed :fields => ['title', 'description', 'id'],
:concatenate => [{:class_name => 'Tag',
:association_sql => "LEFT OUTER JOIN tags_videos ON (videos.id = tags_videos.video_id) LEFT OUTER JOIN tags ON (tags_videos.tag_id = tags.id)",
:field => 'name', :as => 'tagstring'}],
:order => "videos.created_at DESC",
:eagerly_load => [:tags],
:delta => true
# models/tag.rb
is_indexed :fields => ['name'],
:delta => true
# controllers/searches_controller
class SearchesController < ApplicationController
def search
@search_query = (params[:query]) ? params[:query] : nil
unless @search_query.nil?
# set the search options
search_options = {:query => @search_query,
:page => (params[:page] || 1),
:weights => {'title' => 2.0, 'description' => 1.0, 'tagstring' => 1.0},
:per_page => 40,
:class_names => ["Video"],
:sort_mode => 'relevance'}
@search = Ultrasphinx::Search.new(search_options)
Ultrasphinx::Search.client_options['ignore_missing_records'] = true
@search.run
@videos = @search.results
end
end
end
Я также получаю эту ошибку при запуске граблей ultrasphinx:configure
Rebuilding configurations for production environment
Available models are Tagtranslation missing: en_US, support, array, two_words_connectorVideo
Generating SQL
но я не знаю, какое это имеет отношение к этому.
Спасибо за вашу помощь!
1 ответ
Я мог бы решить проблему, установив Sphinx 0.9.9, используя опцию
--prefix=/usr/local/sphinx
-> http://www.sphinxsearch.com/docs/current.html
После этого я удалил все старые индексы, пересоздал файл конфигурации, пересоздал индекс и перезапустил демон ultrasphinx.
Спасибо, в любом случае.