сохранение поисковых терминов rails thinkingsphinx - PullRequest
3 голосов
/ 15 августа 2010

Я использую TS для полнотекстового поиска в моем приложении rails. Я пытаюсь сохранить поисковый запрос, чтобы в моем приложении отображался список самых популярных типов. Вот мое действие индекса контроллера поиска. Я заметил, что при использовании функции поиска «сохранить» поиск занимает около 1,28 с, а без него - около 1,04 с.

Пара вопросов.

1- Есть ли лучший способ сделать это, чтобы я не добавлял дополнительное время к поиску?

2 - Каков в целом лучший способ ускорить полнотекстовый поиск, если не следовать стандартным рекомендациям TS или Sphinx, т.е. есть ли какой-либо вид кэширования или что-то в этом роде?

Спасибо

def index
        terms = params[:search_term]
        terms ||= ""
        if params[:city]
            @search_results  = Post.search terms, :conditions => {:city => params[:city]}, :page => params[:page] || 1, :per_page => Constants::LISTINGS_PER_PAGE
        elsif params[:state]
            @search_results  = Post.search terms, :conditions => {:state => params[:state]}, :page => params[:page] || 1, :per_page => Constants::LISTINGS_PER_PAGE
        else
            @search_results  = Post.search terms, :page => params[:page] || 1, :per_page => 3
        end
#        if @search_results.total_entries > 0
#            Search.create(:term => terms)
#        end
        respond_to do |format|
            format.html
            format.js
        end
    end

1 Ответ

1 голос
/ 17 августа 2010

Думая вслух, может быть, вы можете использовать Delayed :: Job, чтобы сохранить термин поиска за кулисами.Никто действительно не должен ждать их результатов поиска, пока вы собираете свою собственную статистику, IMO.имейте в виду, это всего 0,280 секунды, все же.

проверьте отложенную работу Тоби на github , если вы не знакомы с ней.

...