Переиндексация сфинкса занимает несколько часов - PullRequest
0 голосов
/ 19 декабря 2010

Что я должен сделать, чтобы ускорить индексацию Sphinx (используя MySQL)?Стоит ли использовать другую базу данных, базу данных noSQL?

Обратите внимание также, что дельта-индексация выполняется быстро, только полный процесс переиндексации идет медленно.Пожалуйста, объясните подробно.Спасибо!

ОБНОВЛЕНИЕ: я переиндексирую более 100 000 элементов, и мое определение индекса мышления-сфинкса выглядит следующим образом

define_index do
    indexes [text, user(:nickname), user(:full_name)]
    has rewrites(:id), :as => :rewrite_id
    has rewrites(:user_id), :as => :rewrite_user_id
    has [rewrites(:user_id), user_id], :as => :user_id_or_rewrites_user_id
    has comments(:user_id), :as => :comments_user_id
    has simbols(:id), :as => :simbol_ids
    has followings(:follower_id), :as => :follower_id
    has follows(:followable_id), :as => :followable_id
    has created_at, :sortable => true
    has rewrites_count, :sortable => true
    has relevance, :sortable => true
    has user_id
    set_property :delta => :datetime
  end

Ответы [ 3 ]

1 голос
/ 07 января 2011

При работе с think_sphinx всегда смотрите на SQL, который он генерирует в реальном файле конфигурации sphinx. Запустите анализатор запросов для всех запросов, которые он будет запускать. Я обнаружил, что вы также можете манипулировать запросами.

Также для отношений один ко многим вам может понадобиться добавить это:

: source =>: ranged_query

Это заставит сфинкса использовать отдельный запрос для сбора дочерних элементов, а не внешнего соединения. Во многих случаях это намного быстрее.

1 голос
/ 19 декабря 2010

Построение полного индекса идет медленно.Как медленно?

Быстрое построение дельта-индекса.

На мой взгляд, это звучит нормально.

Базы данных noSQL (в последний раз я слышал @Rails 2.3.5)сложно интегрировать с Rails.Скорость набора SQL не зависит от ваших наборов данных и отношений.

Без дополнительной информации это звучит нормально.

== Редактировать ==

Убедитесь, что у вас есть индексы SQL на

 created_at
 rewrites_count
 relevance

в дополнение к вашим первичным ключам естественно.

0 голосов
/ 22 декабря 2010

как насчет использования индексов реального времени (с настройкой соответствующего предела памяти)

...