Это немного зависит от того, как ваша модель настроена для индексации.
Добавьте EdgeNGramFilterFactory к типу текстового поля в вашем schema.xml или создайте новый тип для текстового поля, обработанного фильтром NGram.
EdgeNGramFilterFactory превращает каждый член в набор NGrams. «Собака» расшифровывается как «d», «do» и «dog».
Этот подход позволит вам сопоставить любой термин, присутствующий в ваших текстовых полях, используя начало буквы. Это полезно для расширения совпадений для ваших запросов, однако, если вы используете это для какой-то фильтрации первой буквы, тогда это может быть не то, что вы хотите.
'Начинается с' QueryFilter
Если проверяемое вами значение представляет собой простое скалярное строковое значение (название статьи, название категории, имя автора и т. Д.), То вы можете индексировать это значение в виде строки и искать совпадения с помощью фильтра запросов.
В Sunspot:
class Article
searchable do
# ...
string :title
end
end
@search = Sunspot.search(Article) do
keywords(params[:q])
paginate(:page => params[:page], :per_page => 20)
where(:title).starting_with(params[:letter])
order_by :relevance, :desc
order_by :article_order, :asc
end