小编Kon*_*din的帖子

Elasticsearch长短语搜索

我正在使用Elasticsearch进行全文搜索,并且试图找到一种更好的方式来搜索长短语。

例如,我有一个字段“ Seller”,最多可以包含250个字符,我想查找所有带有Seller =“带有空格的卖家名称”的商品。

如果我正确理解,为了搜索包含空格的文本,我必须使用NGramTokenizer,它基本上会创建令牌,例如:

's', 'so', 'som', 'some', 'some ', 'some s' etc. 
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义最小和最大克,但我需要能够搜索“ a b”,因此我的最小克必须至少为3,最大克为字段的最大长度。

因此,我必须为每个项目创建很多令牌,并且这只是卖方,但是关于4k字符的描述呢?

该解决方案的性能非常低。

谁能建议一个更好的解决方案来处理带空格的长短语?

我的索引设置:

analysis: {
  analyzer: {
    autoComplete: {
      filter: [
        "lowercase"
      ],
      type: "custom",
      tokenizer: "autoComplete"
    },
    caseInsensitive: {
      type: "custom",
      filter: [
        "lowercase"
      ],
      tokenizer: "keyword"
    }
  },
  tokenizer: {
    autoComplete: {
      type: "nGram",
      min_gram: "1",
      max_gram: "40"
    }
  }
},
Run Code Online (Sandbox Code Playgroud)

我将“ autoComplete”用作索引分析器,将“ caseInsensitive”用作搜索分析器

编辑:

我使用NGramTokenizer以便能够搜索部分单词

实词示例:

Title: 'Huge 48" Bowtie LED Opti neon wall sign. 100,000 hours Bar lamp …
Run Code Online (Sandbox Code Playgroud)

full-text-search elasticsearch nest

3
推荐指数
1
解决办法
1412
查看次数

标签 统计

elasticsearch ×1

full-text-search ×1

nest ×1