Thinking Sphinx (v4.4) - Ошибка при индексировании после включения условия 'where' в определение индекса - PullRequest
0 голосов
/ 13 июля 2020

Thinking sphinx gem version - 4.4.1 Версия Sphinx - 3.3.1

Я получаю

ОШИБКА: index 'article_core': в схеме нет полнотекстовых полей, ничего index!

при индексировании после включения условия where в определение индекса.

Определение индекса ниже

ThinkingSphinx::Index.define :article, :with => :active_record do
  indexes title
  # where "text = 'Past Simple'" # type of text column is text: rebuild successful
  # where "id > 1" # type of id column is int: rebuild successful
  where "photo = 'photo'" # type of photo column is String : rebuild fails
end
  1. Проблема возникает, когда мы используем where условие внутри индекса определение в строковом столбце (с разными символами)
  2. Эта проблема не возникает, когда мы применяем условие where с другими типами данных.
  3. сообщение об ошибке 'ERROR: index' article_core ': no ​​full текстовые поля в схеме, индексировать нечего!. '

1 Ответ

0 голосов
/ 13 июля 2020

Мне интересно, используете ли вы PostgreSQL в качестве базы данных приложения? А может у вас нет статей, соответствующих условию where? В выпусках Sphinx 3.x есть проблема, из-за которой пустые индексы вызывают ошибку при индексировании (и, похоже, это не исправлено в версии 3.3.1, которая вышла только на прошлой неделе).

Я подал эта проблема связана с командой Sphinx , но пока ответа не последовало.

Если вы действительно хотите использовать индексы с поддержкой SQL, боюсь, вам придется понизить рейтинг до Sphinx 2.2.11 или подумайте о переходе на Manticore (ответвление Sphinx, у которого нет этой проблемы). Или вместо этого вы можете использовать индексы в реальном времени , которые отлично работают с Sphinx v3. Если это так, вы можете использовать метод scope в индексе для ограничения результатов:

ThinkingSphinx::Index.define :article, :with => :real_time do
  indexes title

  scope { Article.where(:photo => "photo") }
end
...