为什么我的完成建议选项为空?

时间:2017-11-10 18:52:48

标签: elasticsearch

我目前正在尝试设置我的建议实施。

我的索引设置/映射:

{
    "settings" : {
      "analysis" : {
        "analyzer" : {
          "trigrams" : {
            "tokenizer" : "mesh_default_ngram_tokenizer",
            "filter" : [ "lowercase" ]
          },
          "suggestor" : {
            "type" : "custom",
            "tokenizer" : "standard",
            "char_filter" : [ "html_strip" ],
            "filter" : [ "lowercase" ]
          }
        },
        "tokenizer" : {
          "mesh_default_ngram_tokenizer" : {
            "type" : "nGram",
            "min_gram" : "3",
            "max_gram" : "3"
          }
        }
      }
    },
    "mappings" : {
      "default" : {
        "properties" : {
          "uuid" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "language" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "fields" : {
            "properties" : {
              "content" : {
                "type" : "string",
                "index" : "analyzed",
                "analyzer" : "trigrams",
                "fields" : {
                  "suggest" : {
                    "type" : "completion",
                    "analyzer" : "suggestor"
                  }
                }
              }
            }
          }
        }
      }
    }

我的查询:

{
  "suggest": {
    "query-suggest" : {
       "text" : "som", 
        "completion" : { 
             "field" : "fields.content.suggest"
        }
      }
  },
  "_source": ["fields.content", "uuid", "language"]
}

查询结果:

{
  "took" : 44,
  "timed_out" : false,
  "_shards" : {
    "total" : 20,
    "successful" : 20,
    "failed" : 0
  },
  "hits" : {
    "total" : 5,
    "max_score" : 0.0,
    "hits" : [ {
      "_index" : "node-08c5d084d4e842b385d084d4e8a2b301-fe6212a62ad94590a212a62ad9759026-44874a2a8d2e4483874a2a8d2e44830c-draft",
      "_type" : "default",
      "_id" : "c6b7391075cc437ab7391075cc637a05-en",
      "_score" : 0.0,
      "_source" : {
        "language" : "en",
        "fields" : {
          "content" : "This is<pre>another set of <strong>important</strong>content s<b>om</b>e text with more content you can poke a stick at"
        },
        "uuid" : "c6b7391075cc437ab7391075cc637a05"
      }
    }, {
      "_index" : "node-08c5d084d4e842b385d084d4e8a2b301-fe6212a62ad94590a212a62ad9759026-44874a2a8d2e4483874a2a8d2e44830c-draft",
      "_type" : "default",
      "_id" : "96e2c6765b6841fea2c6765b6871fe36-en",
      "_score" : 0.0,
      "_source" : {
        "language" : "en",
        "fields" : {
          "content" : "This is<pre>another set of <strong>important</strong>content no text with more content you can poke a stick at"
        },
        "uuid" : "96e2c6765b6841fea2c6765b6871fe36"
      }
    }, {
      "_index" : "node-08c5d084d4e842b385d084d4e8a2b301-fe6212a62ad94590a212a62ad9759026-44874a2a8d2e4483874a2a8d2e44830c-draft",
      "_type" : "default",
      "_id" : "fd1472555e9d4d039472555e9d5d0386-en",
      "_score" : 0.0,
      "_source" : {
        "language" : "en",
        "fields" : {
          "content" : "This is<pre>another set of <strong>important</strong>content someth<strong>ing</strong> completely different"
        },
        "uuid" : "fd1472555e9d4d039472555e9d5d0386"
      }
    }, {
      "_index" : "node-08c5d084d4e842b385d084d4e8a2b301-fe6212a62ad94590a212a62ad9759026-44874a2a8d2e4483874a2a8d2e44830c-draft",
      "_type" : "default",
      "_id" : "5a3727b134064de4b727b134063de4c4-en",
      "_score" : 0.0,
      "_source" : {
        "language" : "en",
        "fields" : {
          "content" : "This is<pre>another set of <strong>important</strong>content some<strong>what</strong> strange content"
        },
        "uuid" : "5a3727b134064de4b727b134063de4c4"
      }
    }, {
      "_index" : "node-08c5d084d4e842b385d084d4e8a2b301-fe6212a62ad94590a212a62ad9759026-44874a2a8d2e4483874a2a8d2e44830c-draft",
      "_type" : "default",
      "_id" : "865257b6be4340c69257b6be4340c603-en",
      "_score" : 0.0,
      "_source" : {
        "language" : "en",
        "fields" : {
          "content" : "This is<pre>another set of <strong>important</strong>content some <strong>more</strong> content you can poke a stick at too"
        },
        "uuid" : "865257b6be4340c69257b6be4340c603"
      }
    } ]
  },
  "suggest" : {
    "query-suggest" : [ {
      "text" : "som",
      "offset" : 0,
      "length" : 3,
      "options" : [ ]
    } ]
  }
}

我目前正在使用Elasticsearch 2.4.6而我无法更新

我的索引中有5个文档,只有4个包含“some”这个词。 为什么我会看到5次点击但没有选项?

如果我用字段字符串的第一个单词开始我的建议文本,则选项不为空。 (例如:这个)

在处理包含完整html页面的字段时,我对建议功能的使用是否有效?我不确定该功能是否意在处理每个文档的许多令牌。

我已经尝试将ngram tokenizer用于我的建议分析器,但这并没有改变这种情况。任何提示或反馈都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我看到的问题似乎是限制是完成建议者:

  

匹配始终从文本的开头开始。因此,例如,“Smi”将匹配“Smith,Fed”而不是“Fed Smith”。但是,您可以将“Smith,Fed”和“Fed Smith”列为一个输出的两个不同输入。

http://rea.tech/implementing-autosuggest-in-elasticsearch/