Commit 30f2a10b6af259b8b6b81a2095894006452a7e0e
1 parent
ff9efda0
ansj -> ik
Showing
11 changed files
with
45 additions
and
31 deletions
Show diff stats
docs/ES/ES_8.18/1_ES配置和使用.md
| ... | ... | @@ -108,10 +108,10 @@ labelId_by_skuId_essa_* essa商品标签,区域ID标识 |
| 108 | 108 | #### 分词相关 |
| 109 | 109 | ```bash |
| 110 | 110 | # 索引分词 |
| 111 | -GET /_cat/ansj?text=14寸第4代真眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝&type=index_ansj | |
| 111 | +GET /_cat/ansj?text=14寸第4代真眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝&type=index_ik | |
| 112 | 112 | |
| 113 | 113 | # 查询分词 |
| 114 | -GET /_cat/ansj?text=14寸第4代真眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝&type=query_ansj | |
| 114 | +GET /_cat/ansj?text=14寸第4代真眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝&type=query_ik | |
| 115 | 115 | |
| 116 | 116 | # 查看配置 |
| 117 | 117 | GET /_cat/ansj/config |
| ... | ... | @@ -128,7 +128,7 @@ GET /goods/_search |
| 128 | 128 | #### 1. 查看字段分词结果 |
| 129 | 129 | ```bash |
| 130 | 130 | # 查看中文名称分词结果 |
| 131 | -GET /_cat/ansj?text=14寸第4代真眼珠实身冰雪公仔带手动大推车&type=index_ansj | |
| 131 | +GET /_cat/ansj?text=14寸第4代真眼珠实身冰雪公仔带手动大推车&type=index_ik | |
| 132 | 132 | |
| 133 | 133 | # 查看英文名称分词结果 |
| 134 | 134 | GET /_cat/ansj?text=14 inch 4th generation real eye snow doll with manual cart&type=standard | ... | ... |
docs/ES/ES_8.18/3_ansj分词插件安装.md
| ... | ... | @@ -20,14 +20,14 @@ mvn package |
| 20 | 20 | ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-analysis-ansj/releases/download/v8.7.0/elasticsearch-analysis-ansj-8.7.0.0-release.zip |
| 21 | 21 | |
| 22 | 22 | 测试: |
| 23 | -kibana中 : GET /_cat/ansj?text=中国&type=index_ansj | |
| 23 | +kibana中 : GET /_cat/ansj?text=中国&type=index_ik | |
| 24 | 24 | 或者: |
| 25 | -curl -X GET "http://localhost:9200/_cat/ansj?text=中国&type=index_ansj" | |
| 25 | +curl -X GET "http://localhost:9200/_cat/ansj?text=中国&type=index_ik" | |
| 26 | 26 | |
| 27 | 27 | |
| 28 | 28 | curl -X GET "http://localhost:9200/_cat/ansj?pretty" -H 'Content-Type: application/json' -d' |
| 29 | 29 | { |
| 30 | - "type": "index_ansj", | |
| 30 | + "type": "index_ik", | |
| 31 | 31 | "text": "中国" |
| 32 | 32 | }' |
| 33 | 33 | ... | ... |
docs/ES/ES_8.18/4_索引和查询测试.md
| ... | ... | @@ -54,7 +54,7 @@ curl -X GET "http://localhost:9200/goods/_termvectors/[DOC_ID]?fields=*&pretty" |
| 54 | 54 | curl -X GET "http://localhost:9200/goods/_analyze?pretty" -H 'Content-Type: application/json' -d' |
| 55 | 55 | { |
| 56 | 56 | "text": "玩具", |
| 57 | - "analyzer": "index_ansj" | |
| 57 | + "analyzer": "index_ik" | |
| 58 | 58 | }' |
| 59 | 59 | |
| 60 | 60 | ... | ... |
docs/ES/ES_8.18/README__ES查询相关.md
| ... | ... | @@ -247,22 +247,22 @@ POST spu/_analyze |
| 247 | 247 | } |
| 248 | 248 | ``` |
| 249 | 249 | |
| 250 | -### query_ansj分词器 | |
| 250 | +### query_ik分词器 | |
| 251 | 251 | |
| 252 | 252 | ```json |
| 253 | 253 | POST spu/_analyze |
| 254 | 254 | { |
| 255 | - "analyzer": "query_ansj", | |
| 255 | + "analyzer": "query_ik", | |
| 256 | 256 | "text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝" |
| 257 | 257 | } |
| 258 | 258 | ``` |
| 259 | 259 | |
| 260 | -### index_ansj分词器 | |
| 260 | +### index_ik分词器 | |
| 261 | 261 | |
| 262 | 262 | ```json |
| 263 | 263 | POST spu_test/_analyze |
| 264 | 264 | { |
| 265 | - "analyzer": "index_ansj", | |
| 265 | + "analyzer": "index_ik", | |
| 266 | 266 | "text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝" |
| 267 | 267 | } |
| 268 | 268 | ``` | ... | ... |
docs/ES/ES_8.18/README__分词相关.md
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | 工厂搜索 依赖于关键词召回、没有做语义召回和精排,加上语义召回和精排则成本过高,所以对分词效果仍然很依赖。badcase: q=锦鸿 无法召回 锦鸿达 |
| 4 | 4 | 1. 虽然商品搜索已经不强依赖于分词效果,但是工厂搜索仍然对分词效果有很大依赖,所以进行了优化。 |
| 5 | 5 | 2. 优化内容: |
| 6 | - 1) index_ansj + 自定义词典(需要配置自定义词典。 不配置自定义词典的时候,index_ansj分词结果和query_ansj完全一致,配置自定义词典时,index_ansj 将 ) | |
| 6 | + 1) index_ik + 自定义词典(需要配置自定义词典。 不配置自定义词典的时候,index_ik分词结果和query_ik完全一致,配置自定义词典时,index_ik 将 ) | |
| 7 | 7 | 2) ansj自定义词典 补充属性词 |
| 8 | 8 | |
| 9 | 9 | |
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | |
| 23 | -| Query | query_ansj 分词结果 | index_ansj 分词结果 | | |
| 23 | +| Query | query_ik 分词结果 | index_ik 分词结果 | | |
| 24 | 24 | |---------|------------------------------------------|--------------------------------------------------| |
| 25 | 25 | | 锦鸿达 | 锦, 鸿达 | 锦, 鸿达, 鸿, 达 | |
| 26 | 26 | | 锦鸿 | 锦鸿 | 锦鸿, 锦, 鸿 | |
| ... | ... | @@ -29,7 +29,7 @@ |
| 29 | 29 | |
| 30 | 30 | |
| 31 | 31 | ansj 插件自定义词典补充属性词后: |
| 32 | -| Query | query_ansj 分词结果 | index_ansj 分词结果 | | |
| 32 | +| Query | query_ik 分词结果 | index_ik 分词结果 | | |
| 33 | 33 | |---------|------------------------------------------|--------------------------------------------------| |
| 34 | 34 | | 锦鸿达 | 锦, 鸿达 | 锦, 鸿达, 鸿, 达 | |
| 35 | 35 | | 锦鸿 | 锦鸿 | 锦鸿, 锦, 鸿 | |
| ... | ... | @@ -65,8 +65,8 @@ POST spu/_analyze |
| 65 | 65 | |
| 66 | 66 | ## ansj分词器的问题: |
| 67 | 67 | |
| 68 | -### 1. index_ansj不符合预期 | |
| 69 | -index模式(type=index_ansj)不符合预期 :type=index_ansj type=query_ansj 结果永远都是一样的。 | |
| 68 | +### 1. index_ik不符合预期 | |
| 69 | +index模式(type=index_ik)不符合预期 :type=index_ik type=query_ik 结果永远都是一样的。 | |
| 70 | 70 | https://github.com/NLPchina/elasticsearch-analysis-ansj/issues/235 |
| 71 | 71 | |
| 72 | 72 | 已解决:需要配置自定义词典 |
| ... | ... | @@ -75,7 +75,7 @@ https://github.com/NLPchina/elasticsearch-analysis-ansj/issues/235 |
| 75 | 75 | 特殊符号(减号)会跟后面的词粘连到一起,导致搜索减号后面的词,无法匹配: |
| 76 | 76 | |
| 77 | 77 | ```bash |
| 78 | -GET /_cat/ansj?text=狗狗系列-柴犬积木&type=index_ansj | |
| 78 | +GET /_cat/ansj?text=狗狗系列-柴犬积木&type=index_ik | |
| 79 | 79 | { |
| 80 | 80 | "name": "-柴", |
| 81 | 81 | "nature": "nrf", |
| ... | ... | @@ -84,7 +84,7 @@ GET /_cat/ansj?text=狗狗系列-柴犬积木&type=index_ansj |
| 84 | 84 | "synonyms": null |
| 85 | 85 | }, |
| 86 | 86 | |
| 87 | -GET /_cat/ansj?text=狗狗系列-哈士奇犬&type=index_ansj | |
| 87 | +GET /_cat/ansj?text=狗狗系列-哈士奇犬&type=index_ik | |
| 88 | 88 | { |
| 89 | 89 | "name": "-哈士奇", |
| 90 | 90 | "nature": "nrf", |
| ... | ... | @@ -99,15 +99,15 @@ GET /_cat/ansj?text=狗狗系列-哈士奇犬&type=index_ansj |
| 99 | 99 | 暂时解决办法是: |
| 100 | 100 | ```json |
| 101 | 101 | "analyzer": { |
| 102 | - "index_ansj": { | |
| 102 | + "index_ik": { | |
| 103 | 103 | "type": "custom", |
| 104 | 104 | "char_filter": ["hyphen_to_space"], |
| 105 | - "tokenizer": "index_ansj" | |
| 105 | + "tokenizer": "index_ik" | |
| 106 | 106 | }, |
| 107 | - "query_ansj": { | |
| 107 | + "query_ik": { | |
| 108 | 108 | "type": "custom", |
| 109 | 109 | "char_filter": ["hyphen_to_space"], |
| 110 | - "tokenizer": "query_ansj" | |
| 110 | + "tokenizer": "query_ik" | |
| 111 | 111 | } |
| 112 | 112 | } |
| 113 | 113 | ``` | ... | ... |
docs/常用查询 - ES.md
| ... | ... | @@ -87,12 +87,12 @@ curl -u 'saas:4hOaLaf41y2VuI8y' -X GET 'http://localhost:9200/search_products_ |
| 87 | 87 | }' |
| 88 | 88 | |
| 89 | 89 | Curl -u 'saas:4hOaLaf41y2VuI8y' -X GET 'http://localhost:9200/search_products_tenant_170/_analyze' -H 'Content-Type: application/json' -d '{ |
| 90 | - "analyzer": "index_ansj", | |
| 90 | + "analyzer": "index_ik", | |
| 91 | 91 | "text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝" |
| 92 | 92 | }' |
| 93 | 93 | |
| 94 | 94 | curl -u 'saas:4hOaLaf41y2VuI8y' -X GET 'http://localhost:9200/search_products_tenant_170/_analyze' -H 'Content-Type: application/json' -d '{ |
| 95 | - "analyzer": "query_ansj", | |
| 95 | + "analyzer": "query_ik", | |
| 96 | 96 | "text": "14寸第4代-眼珠实身冰雪公仔带手动大推车,搪胶雪宝宝" |
| 97 | 97 | }' |
| 98 | 98 | ... | ... |
docs/搜索API对接指南.md
| ... | ... | @@ -2075,8 +2075,8 @@ curl "http://localhost:6006/health" |
| 2075 | 2075 | |
| 2076 | 2076 | | 分析器 | 语言 | 描述 | |
| 2077 | 2077 | |--------|------|------| |
| 2078 | -| `index_ansj` | 中文 | 中文索引分析器(用于中文字段) | | |
| 2079 | -| `query_ansj` | 中文 | 中文查询分析器(用于中文字段) | | |
| 2078 | +| `index_ik` | 中文 | 中文索引分析器(用于中文字段) | | |
| 2079 | +| `query_ik` | 中文 | 中文查询分析器(用于中文字段) | | |
| 2080 | 2080 | | `hanlp_index` ⚠️ TODO(暂不支持) | 中文 | 中文索引分析器(用于中文字段) | |
| 2081 | 2081 | | `hanlp_standard` ⚠️ TODO(暂不支持) | 中文 | 中文查询分析器(用于中文字段) | |
| 2082 | 2082 | | `english` | 英文 | 标准英文分析器(用于英文字段) | | ... | ... |
docs/系统设计文档v1.md
docs/索引字段说明v2-plan.md
| ... | ... | @@ -11,7 +11,7 @@ |
| 11 | 11 | #### 1.1 多语言文本字段 |
| 12 | 12 | |
| 13 | 13 | - 为文本字段添加中英文双字段支持(title.zh/title.en, brief.zh/brief.en, description.zh/description.en, vendor.zh/vendor.en) |
| 14 | -- 中文字段使用 `index_ansj`/`query_ansj` 分析器(对应文档中的hanlp_index/hanlp_standard) | |
| 14 | +- 中文字段使用 `index_ik`/`query_ik` 分析器(对应文档中的hanlp_index/hanlp_standard) | |
| 15 | 15 | - 英文字段使用 `english` 分析器 |
| 16 | 16 | - **暂时只填充中文字段,英文字段设为空**(不需要语言检测,每个tenant的语言预先知道) |
| 17 | 17 | ... | ... |
indexer/ANCHORS_AND_SEMANTIC_ATTRIBUTES.md
| ... | ... | @@ -22,7 +22,7 @@ |
| 22 | 22 | "qanchors": { |
| 23 | 23 | "type": "object", |
| 24 | 24 | "properties": { |
| 25 | - "zh": { "type": "text", "analyzer": "index_ansj", "search_analyzer": "query_ansj" }, | |
| 25 | + "zh": { "type": "text", "analyzer": "index_ik", "search_analyzer": "query_ik" }, | |
| 26 | 26 | "en": { "type": "text", "analyzer": "english" }, |
| 27 | 27 | "de": { "type": "text", "analyzer": "german" }, |
| 28 | 28 | "ru": { "type": "text", "analyzer": "russian" }, | ... | ... |
suggestion/mapping.py
| ... | ... | @@ -6,7 +6,7 @@ from typing import Dict, Any, List |
| 6 | 6 | |
| 7 | 7 | |
| 8 | 8 | ANALYZER_BY_LANG: Dict[str, str] = { |
| 9 | - "zh": "index_ansj", | |
| 9 | + "zh": "index_ik", | |
| 10 | 10 | "en": "english", |
| 11 | 11 | "ar": "arabic", |
| 12 | 12 | "hy": "armenian", |
| ... | ... | @@ -45,7 +45,7 @@ def _completion_field(lang: str) -> Dict[str, Any]: |
| 45 | 45 | return { |
| 46 | 46 | "type": "completion", |
| 47 | 47 | "analyzer": analyzer, |
| 48 | - "search_analyzer": "query_ansj", | |
| 48 | + "search_analyzer": "query_ik", | |
| 49 | 49 | } |
| 50 | 50 | return {"type": "completion", "analyzer": analyzer} |
| 51 | 51 | |
| ... | ... | @@ -72,6 +72,20 @@ def build_suggestion_mapping(index_languages: List[str]) -> Dict[str, Any]: |
| 72 | 72 | "number_of_shards": 1, |
| 73 | 73 | "number_of_replicas": 0, |
| 74 | 74 | "refresh_interval": "30s", |
| 75 | + "analysis": { | |
| 76 | + "analyzer": { | |
| 77 | + "index_ik": { | |
| 78 | + "type": "custom", | |
| 79 | + "tokenizer": "ik_max_word", | |
| 80 | + "filter": ["lowercase", "asciifolding"], | |
| 81 | + }, | |
| 82 | + "query_ik": { | |
| 83 | + "type": "custom", | |
| 84 | + "tokenizer": "ik_smart", | |
| 85 | + "filter": ["lowercase", "asciifolding"], | |
| 86 | + }, | |
| 87 | + } | |
| 88 | + }, | |
| 75 | 89 | }, |
| 76 | 90 | "mappings": { |
| 77 | 91 | "properties": { | ... | ... |