Sunspot: нельзя использовать order_by в текстовых полях?

Если я попытаюсь использовать order_by в текстовом поле, я получу: «поле не настроено с именем заголовка».

Отлично работает с полями типа "строка". Поэтому я использую обходной путь, например:

searchable do 
  text :title

  string :title_sortable do 
    title
  end
end

Есть ли причина, по которой мы не можем использовать order_by в текстовых полях?


person George Armhold    schedule 06.07.2012    source источник


Ответы (1)


Это дизайн Solr. Текстовые поля токенизированы. Сортировка по токенизированному полю не имеет смысла.

Рассмотрим следующие два токенизированных поля с пробелами в двух разных документах.

"скорострельные патроны" "черный медведь"

Когда вы сортируете их в порядке возрастания, первый не должен стоять перед вторым только потому, что в нем есть слово «боеприпасы».

Вот почему сортируемые поля должны быть определены как String.

person user1452132    schedule 07.07.2012
comment
Ах, я вижу, что я использовал text_general (который, по-видимому, можно заказать?) для моего поля заголовка, когда я использовал SolrJ. После преобразования в Ruby/Sunspot я сделал это текстовым полем. Спасибо. - person George Armhold; 07.07.2012