Я использую sunspot
.Как я могу выполнить запрос LIKE
(LIKE %q%
)?Я хотел бы сделать что-то вроде этого:
@search = Sunspot.search(User) do |q|
q.text_fields { with(:company_name).like(params[:q]) }
end.results
вместо:
@search = Sunspot.search(User) do |q|
q.text_fields { with(:company_name).starting_with(params[:q]) }
end.results
, что частично работает для меня.Просматривая код sunspot
, я обнаружил этот фрагмент кода:
class StartingWith < Base
private
def to_solr_conditional
"#{solr_value(@value)}*"
end
end
По сути, он генерирует следующий хэш поиска пятна:
Sunspot.search(User) do |q|
q.text_fields { with(:company_name).starting_with("sta")} }
end
=> Sunspot::Search:{:q=>"*:*", :fq=>["type:User", "company_name_text:sta*"]}
На случай, если не существует более простого способа реализации LIKE %query%
, как мне создать новый класс Like
с методом to_solr_conditional
, который генерирует логику SOLR?