Поисковый запрос Rails для нескольких полей не работает

Я хочу сделать панель поиска для поиска термина во многих полях моей модели. На данный момент у меня есть этот код:

@query_search = "#{params[:search]}"
products = Campaign.search query: {match: {name: @query_search}}, fields: [{owner:  @query_search}], misspellings: {distance: 2}

результат работает только с name полями (и только с точным регистром). fields: [{owner: @query_search}] ничего не меняет. Я пытался делать такие вещи:

products = Campaign.search query: {match: {name: @query_search, brief: @query_search}}, fields: [{owner:  @query_search}], misspellings: {distance: 2}

но никакого результата, опечатки тоже не работают в любом случае.

Итак, у кого-нибудь есть идея? Спасибо !


person F4Ke    schedule 10.06.2014    source источник


Ответы (3)


Опция query указывает Searchkick использовать именно тот запрос, который вы указали, поэтому другие опции будут проигнорированы.

person Andrew Kane    schedule 11.06.2014

То, что сказал Андрей, и просто попробуйте запустить обычный поиск:

products = Campaign.search(
  params[:search],
  misspellings: {distance: 2}
)

В любом случае он должен генерировать запрос с multi_match по всем полям по умолчанию.

person tirdadc    schedule 17.06.2014

Вам нужно использовать функцию elasticsearch cross_fields или query_string для поиска более чем в одном поле с одним термином. К сожалению, searchkick не поддерживает его, и вам придется делать это самостоятельно.

Вы можете последовать примеру моего ответа на этот вопрос stackoverflow.

person William Weckl    schedule 14.12.2015