1

我想做一个搜索栏来搜索我模型的许多领域中的一个术语。现在我有这个代码:

@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}

但没有结果,拼写错误在任何情况下都不起作用。

那么,有人有想法吗?谢谢 !

4

3 回答 3

1

query选项告诉 Searchkick 使用您提供的确切查询,因此其他选项将被忽略。

于 2014-06-11T08:41:57.443 回答
0

安德鲁说了什么,然后尝试运行常规搜索:

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

默认情况下,它应该在所有字段中生成一个带有 multi_match 的查询。

于 2014-06-17T15:01:33.487 回答
0

您需要使用elasticsearch cross_fieldsquery_string功能在多个字段中搜索一个词。不幸searchkick的是不支持它,你必须自己做。

您可以按照我对这个stackoverflow 问题的回答为例。

于 2015-12-14T12:05:05.927 回答