2

我试图从 Elasticsearch-rails gem 中获取亮点,但我无法让它工作。

我的搜索方法:

query = {
  query: {
    filtered: {
      query: {
        match: {
          _all: params[:q]
        }
      },
      filter: {
        term: {
          active: true
        }
      }
    },
  },
  highlight: {
    fields: {
      _all: {fragment_size: 150, number_of_fragments: 3}
    }
  }
}

@results = Elasticsearch::Model.search(query, [Market, Component]).results

当我在视图中映射我的结​​果以检查是否有任何亮点时,我得到一个数组false

= @results.map(&:highlight?)

我在这里阅读了 Elasticsearch 文档:https ://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html和 gem 的文档:https ://github.com/elastic /elasticsearch-rails/tree/master/elasticsearch-model我的查询似乎是正确的。不知道如何进行。

4

1 回答 1

3

显然,解决方案是使用"*"而不是"_all"

query = {
  query: {
    filtered: {
      query: {
        match: {
          _all: params[:q]
        }
      },
      filter: {
        term: {
          active: true
        }
      }
    },
  },
  highlight: {
    tags_schema: "styled",
    fields: {
      :"*" => {}
    }
  }
}
于 2015-08-28T12:08:46.950 回答