analysis-ik icon indicating copy to clipboard operation
analysis-ik copied to clipboard

ik_smart的结果不是ik_max_word的子集

Open slixurd opened this issue 8 years ago • 12 comments

版本1.8,ES版本2.2 没有配置任何自定义词典 如果使用match_phrase作为查询语句 index使用ik_max_word,查询使用ik_smart。

      "match": {
         "sentence": {
            "query": "在电池内部也未发现明显破损的痕迹",
            "slop":2,
            "type": "phrase",
            "analyzer": "ik_smart"
         }
      }

使用ik_smart无法查询到这个句子。 看了一下主要是因为ik_smart的分词结果并不是ik_max_word的子集。 ik_smart把 "token": "未"拆出来了。而ik_max_word没有。

slixurd avatar Sep 29 '16 11:09 slixurd

目前不一定是子集

medcl avatar Nov 03 '16 06:11 medcl

这个问题从很早的版本就一直有,建议能否修一下;因为一般ik_smart用作search,分词结果不是子集很尴尬。

ishare avatar Nov 21 '16 11:11 ishare

我们也发现这个问题了, @medcl 能否帮忙说明下为什么会有这种情况,以及什么时候会有这种情况吗?

hufuman avatar Jan 08 '17 15:01 hufuman

@hufuman 因为是两种分词算法,如果要支持的话,需要将 iksamrt 的也算一篇,再合并,性能应该要降低

medcl avatar Jan 10 '17 03:01 medcl

@medcl 大神,最近使用也遇到了这种问题,主要是使用Ik_smart 作为分词器进行关键词提取,然后通过关键词去查询,结果发现对于预期文档无法查询出来,目前遇到的ik_smart分出来的CN_CHAR 在ik(ik_max_word)下没有分出来,看上面的回复似乎也是这个情况。我能否在使用ik_smart分词的时候通过type过滤掉CN_CHAR的结果来保证剩下来的分词结果是ik分词的子集呢?

BlackieKing avatar Jul 03 '17 09:07 BlackieKing

同样遇到这个问题,请问有办法解决吗

Just-CJ avatar Sep 26 '18 08:09 Just-CJ

关注,同样遇到 ik_max_word 分成 10|支,但 ik_smart 给出 10支 的问题了。之前一直以为是子集,于是索引用 ik_max_word,查询用 ik_smart

upbit avatar Dec 06 '18 08:12 upbit

同样遇到这个问题了, 有解决的吗

stormeyes avatar Jul 02 '20 09:07 stormeyes

目前最好,前后使用同一套,建索引用ik_max_word, query也使用ik_max_word

caozhou avatar Aug 20 '21 06:08 caozhou

原来 ik_smart 的结果不是 ik_max_word 的子集。索引用 ik_max_word,查询用 ik_smart 时,就有可能搜不到结果,请问有什么好的处理方法吗?

Sdky avatar Jun 01 '22 11:06 Sdky

原来 ik_smart 的结果不是 ik_max_word 的子集。索引用 ik_max_word,查询用 ik_smart 时,就有可能搜不到结果,请问有什么好的处理方法吗?

都用 ik_max_word,这样分词和分析器是一致的

upbit avatar Jun 01 '22 11:06 upbit

原来 ik_smart 的结果不是 ik_max_word 的子集。索引用 ik_max_word,查询用 ik_smart 时,就有可能搜不到结果,请问有什么好的处理方法吗?

都用 ik_max_word,这样分词和分析器是一致的

但我不想在查询时拆分后的词项包含重复的字

Sdky avatar Jun 01 '22 11:06 Sdky