你不会是程序猿吧?

ES按照文章内容字段进行搜索,搜索词不进行分词,如何实现?

Elasticsearch | 作者 Cferyang | 发布于2019年10月15日 | 阅读数:7820

例如:对一系列文章进行检索,搜索输入框中输入"我是中国人",搜索时,对"我是中国人"不进行分词,即完全匹配,只有这些文章中完全包含"我是中国人",才能被检索出,请问怎么实现?
已邀请:

LZY_lee

赞同来自:

设置type为keyword是可以完全匹配的

- Elasticsearch,php

赞同来自:

创建索引时,对应的分词器不使用停止词,搜索的时候,用and的形式,可以这样试一试

zlzlsx

赞同来自:

可以对该字段,同时设置为keyword 和text,当遇到输入为"我是中国人",进行keyword 的方式进行搜索

alonglee

赞同来自:

也可以对输入的关键词进行分词, 通过slop参数控制编辑距离
能解决大部分的问题

wuqi55777

赞同来自:

可以试一试使用ngram试一试,搜词不用分词,直接对内容进行ngram
 
"tokenizer": { 
"ngram_tokenizer": { "token_chars": [ "letter", "digit" ], "min_gram": "2", "type": "ngram", "max_gram": "30" } }
  
"type": "text", "analyzer": "ngram_analyzer"
 

要回复问题请先登录注册