2016-02-24 6 views
3

Как заказать результаты в алфавитном порядке без учета регистра с помощью Sunspot?Результаты для заказа в алфавитном порядке по алфавиту в Sunspot

Я не мог найти ничего соответствующего в https://github.com/sunspot/sunspot/wiki/Ordering-and-pagination или http://wiki.apache.org/solr/FunctionQuery или https://github.com/sunspot/sunspot#ordering

ответ

1

Я искал подобный ответ, и я не нашел его на SO. Однако я наткнулся на этот кусочек магического кода: string(:sort_title) { title.downcase }.
Теперь немного объясняю. Solr (sunspot) не позволит вам сортировать/заказывать по типу текста, а тип строки не может быть чувствительным к регистру. Таким образом, я подумал о следующем решении. Допустим, у вас есть поле field1, которое вы хотите отсортировать, используя сортировку без учета регистра. Затем вы создаете другое поле в поисковой части индексации, назовем его field2 со значением field1.downcase. Затем вы заказываете field2 и извлекаете результаты. Таким образом, вы можете сохранить как тип case (в поле1, который позволяет легко и правильно отображать данные), так и отсортировать по типу case (с помощью поля2). Это должно выглядеть немного как это:

class Test < ActiveRecord::Base 
    searchable do 
    string(:field1) { your_class_field } 
    string(:field2) { your_class_field.downcase(same as above) } 
    end 
end 

Ответ пришел немного поздно для вас, но, может быть, какой-то другой парень выиграет от этого!

+0

Нет, мне не опоздало, ошибка, которую я хочу исправить, так долго оставалась открытой. > _ < –

+1

хорошо надеюсь, что это вам помогло: D –