Как мне динамически построить блок поиска в солнечных пятнах?

Я конвертирую приложение Rails с использования plays_as_solr в sunspot.

Приложение использует возможность поиска поля в solr, которая была представлена ​​в actions_as_solr. Вы мог бы дать ему строку запроса, подобную этой:

title:"The thing to search"

, и он будет искать эту строку в поле заголовка.

При преобразовании в солнечное пятно я разбираю части строки запроса, специфичные для поля, и мне нужно динамически генерировать поиск блок. Примерно так:

Sunspot.search(table_clazz) do
  keywords(first_string, :fields => :title)
  keywords(second_string, :fields => :description)

  ...
  paginate(:page => page, :per_page => per_page)      
end

Это усложняется тем, что также необходимо выполнять диапазоны продолжительности (секунды, целые числа) и отрицание, если этого требует запрос.

В текущей системе пользователи могут искать что-то в заголовке, исключая записи с чем-то еще в другом поле и с масштабированием по продолжительности.

Вкратце, как мне динамически генерировать эти блоки?

6
задан Richard Hulse 24 September 2019 в 21:56
поделиться