Я добавляю поиск в свое приложение rails с драгоценным камнем sunspot, и я хотел бы иметь возможность искать транзакции по идентификатору, сумме или описанию. Поиск по одному атрибуту работает нормально, но когда я добавляю несколько вызовов with
или fulltext
в блок поиска, я не получаю никаких результатов. Я обнаружил, что могу обернуть вызовы with
в блок any_of
, но включение fulltext
вызывает ошибку undefined method 'fulltext' for #<Sunspot::DSL::Scope:0x007fb6519c13a0>
.
Поиск возвращает правильные результаты, когда я ищу только по 1 атрибуту, то есть у меня есть только 1 с или 1 полный текст в блоке any_of. Поэтому я должен искать по идентификатору, количеству и описанию индивидуально. Это означает, что если есть транзакция с идентификатором 213, поиск 213 возвращает транзакцию с идентификатором 213. Если я ищу 4,25 доллара, то результаты возвращают каждую транзакцию на сумму 4,25 доллара. Если я ищу «Starbucks», я получаю каждую транзакцию со словом «Starbucks» в описании. Если у меня есть несколько with или fulltext внутри любого блока, я не получаю никаких результатов.
Что мне не хватает?
У меня есть модель транзакции:
class Transaction < ActiveRecord::Base
...
searchable do
text :description
integer :id
float :amount
end
...
end
И действие в контроллере так:
def search
@search = Transaction.search do
any_of do
with(:amount, params[:search])
with(:id, params[:search])
fulltext(params[:search])
end
end
@transactions = @search.results
end
description
, которое содержит этот поиск - person PhilVarg   schedule 30.04.2016