像这样在附件上模糊 Returns 在部分单词上没有任何内容

Fuzzy Like This on Attachment Returns Nothing on Partial Word

我的映射是这样的:

    {
      "doc": {
        "mappings": {
          "mydocument": {
            "properties": {
              "file": {
                "type": "attachment",
                "path": "full",
                "fields": {
                  "file": {
                    "type": "string",
                    "store": true,
                    "term_vector": "with_positions_offsets"
                  },
                  "author": {
...

当我搜索一个完整的单词时,我得到的结果是:

  "query": {
        "fuzzy_like_this" : {
          "fields" : ["file"],
          "like_text" : "This_is_something_I_want_to_search_for",
          "max_query_terms" : 12
        }
    },
  "highlight" : {
    "number_of_fragments" : 3,
    "fragment_size" : 650,
    "fields" : {
      "file" : {  }
    }
  }   

但是,如果我将搜索词更改为 "This_is_something_I_want",我将一无所获。我错过了什么?

要实现部分匹配,我们必须先了解fuzzy like this的作用,然后再决定要对return进行什么部分匹配。 fuzzy like this 将执行 2 个关键功能。

  1. like_text 将使用默认分析器进行分析。然后,所有生成的标记将用于根据词频或 tf-idf
  2. 查找文档

这通常意味着输入项将在 space 上拆分并小写。 This_is_something_I_want 因此将被标记为 this_is_something_i_want。除非您的文件中包含这个确切的字词,否则不会匹配任何文件。

  1. 其次,所有条款都将是fuzzified。模糊搜索根据需要对一个词进行多少字符更改以匹配另一个词来对术语进行评分。例如,要从 bathat,我们需要更改 1 个字符。

为了我们的案例从 this_is_something_i_wantthis_is_something_i_want_to_search_for,我们需要进行 14 个字符更改(添加 _to_search_for。)标准模糊搜索仅允许 3 个字符更改使用长度超过 5 或 6 个字符的术语。然而,将模糊限制增加到 14 会产生严重偏差的结果

所以这些功能都不会帮助产生您想要的结果。

以下是我的建议:

  1. 您可以实现类似于 this 的下划线拆分分析器。生成的令牌将是 ['this', 'is', 'something', 'i', 'want'],可以正确匹配示例案例

  2. 或者,如果您只需要一个以指定文本开头的文档,您可以使用 phrase prefix 查询而不是 fuzzy like this。文档 here