创建多词搜索建议

Creating multi-word search suggestions

Elasticsearch 的 edgen_n_grams 能否设置为在 ES 索引爬网数据时构建多词短语?

我想使用这些多词短语作为我正在构建的小型搜索应用程序的搜索建议。

我正在使用 Nutch 来抓取一些网站并使用 ES 来索引抓取的数据。

我认为由于 ES 可以在 whitespace 上进行拆分 - 这不应该那么难......但是,我没有得到我预期的结果。所以现在我想问这是否有可能做到?

我的 ES 索引是这样设置的

    PUT /_template/autocomplete_1
{
  "template": "auto*",
  "settings": {
   "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1   
    },
    "analysis": {
      "filter": {
        "autocomplete_filter": {
          "type": "edge_ngram",
          "min_gram": "1",
          "max_gram": "30",
          "token_chars": ["letter","digit","whitespace"]
        }
      },
      "analyzer": {
        "autocomplete_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "autocomplete_filter"
            ]     
          }
        }
      }
    },
    "mappings": {
      "doc": {
        "_all": {
          "enabled": false
      },
      "properties": {
        "anchor": {
          "type": "string"
        },
       "boost": {
          "type": "string"
       },
       "content": {
          "type": "string",
          "index_analyzer": "autocomplete_analyzer",
          "search_analyzer": "standard"
       },...

"content" 是每个 Nutch 的 html 正文字段。我正在使用 'content',因为我认为它会生成最多的短语。

要创建多词短语,您需要 shingles. More specifically, this token filter 可以组合标记。