Sunspot `LIKE` query
Estou a usarsunspot
. Como posso executar umLIKE
inquerir LIKE %q%
)? Eu gostaria de fazer algo assim:
@search = Sunspot.search(User) do |q|
q.text_fields { with(:company_name).like(params[:q]) }
end.results
ao invés de
@search = Sunspot.search(User) do |q|
q.text_fields { with(:company_name).starting_with(params[:q]) }
end.results
que funciona parcialmente para mim. Analisando osunspot
código, encontrei este trecho de código:
class StartingWith < Base
private
def to_solr_conditional
"#{solr_value(@value)}*"
end
end
Ele basicamente gera o seguinte hash de pesquisa de manchas solares:
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*"]}
No caso de não haver uma maneira mais simples de implementarLIKE %query%
, como devo criar uma nova classeLike
com o métodoto_solr_conditional
que gera a lógica SOLR?