技术博客
免费中文分词(文本处理):中文搜索/站内检索场景——用索引分词 + 关键词构建倒排索引

免费中文分词(文本处理):中文搜索/站内检索场景——用索引分词 + 关键词构建倒排索引

作者: 万维易源
2026-09-03
免费中文分词文本处理中文NLPAPI教程ShowAPI
# 免费中文分词(文本处理):中文搜索/站内检索场景——用索引分词 + 关键词构建倒排索引 > 接口:中文分词(2663-1, type=index) / 关键词抽取(2663-6)|是否免费:是(含档位限制)|适用人群:搜索/检索系统开发者|阅读时间:约 7 分钟 ## 核心要点 - 建中文搜索引擎,第一步是把文档切成词项(term),这一步用中文分词的 `index` 类型最合适(细粒度、利于召回)。 - 把「文档 → 词项」映射反转,就得到倒排索引(词项 → 出现过的文档 id 列表)。 - 关键词抽取(2663-6)可额外作为文档的「标签词」,辅助排序与高亮。 ## Why 中文没有空格分词,直接拿整句去匹配会漏掉大量结果。搜索引擎的标准做法:先分词、再建倒排索引。ShowAPI 的 `index` 分词类型就是为这种场景设计的——你喂文档、拿词项,自己维护一张「词→文档」的表,查询时同样分词再去表里查,召回率和速度都上来。中小站内搜索、帮助中心检索,用这套免费接口就能起步。 ## What **接口速览** | 接入点 | 路径 | 用途 | |------|------|------| | 索引分词 | 2663-1(`type=index`) | 把文档切成细粒度词项 | | 关键词抽取 | 2663-6 | 抽文档标签词,辅助排序 | ## How 建索引 + 查询的最小实现: ```python import requests APPKEY = "YOUR_APPKEY" def seg_index(text): resp = requests.post("https://route.showapi.com/2663-1", params={"appKey": APPKEY}, data={"text": text, "type": "index"}, timeout=10).json() body = resp["showapi_res_body"] if body.get("ret_code") != 0: raise RuntimeError(body.get("remark")) return [w["word"] for w in body.get("words", [])] # 建倒排索引 docs = { 1: "北京大学创立于1898年", 2: "复旦大学位于上海", } inverted = {} for doc_id, text in docs.items(): for term in seg_index(text): inverted.setdefault(term, []).append(doc_id) # 查询:同样用 index 分词,再去索引查 query = seg_index("北京大学") hits = set() for term in query: hits.update(inverted.get(term, [])) print("命中文档:", hits) # {1} ``` > 注意:默认免费档位下 `words` 可能为空,建索引前先确认账号额度(见 [免费档位与调用策略](https://www.showapi.com/guides/cnseg-free-tier-2663))。 ## 返回示例与解析 索引分词(2663-1, `type=index`)示例: ```json { "showapi_res_body": { "ret_code": 0, "remark": "成功", "words": [ { "word": "北京" }, { "word": "大学" }, { "word": "创立" } ] } } ``` - 细粒度切分让「北京大学」拆成「北京 / 大学」,查询「北京」也能命中。 - 倒排索引就是把每个词项指向包含它的文档集合。 ## 进阶 / 边界 - **建索引与查询用同一种 `type`**:检索系统的写入分词和查询分词必须一致(都用 `index`),否则词项对不齐、召回错乱。 - **去重与归一**:建索引前对词项做去停用词、小写/简繁归一,效果更佳(简繁转换见 [汉字转拼音与简繁转换实战](https://www.showapi.com/guides/cnseg-convert-2663))。 - **规模与档位**:文档量大时调用次数随之增长,注意免费档位额度;高吞吐需升级权益档。 ## FAQ **Q1:为什么用 index 而不是 standard?** `index` 更细粒度,利于倒排索引召回;`standard` 偏通用,可能把专有名词整词保留而漏召回。 **Q2:建索引和查询的分词类型必须一致吗?** 必须一致,否则词项空间不同,查询命中会出错。 **Q3:倒排索引存在哪?** 由你自己维护(内存字典/Redis/ES 等),接口只负责分词。 **Q4:免费档返回空 words 影响建索引吗?** 会,空结果导致索引缺失;先解决额度问题。 **Q5:关键词抽取能替代分词建索引吗?** 不能,关键词是少量标签词,适合排序/高亮,建索引仍需全文分词。 ## 相关能力 / 下一步阅读 - [免费中文分词(文本处理):6 种分词类型怎么选?](https://www.showapi.com/guides/cnseg-types-2663) - [免费中文分词(文本处理):自动提取文章关键词与摘要](https://www.showapi.com/guides/cnseg-keywords-summary-2663) - [免费中文分词(文本处理):免费档位到底能调多少?](https://www.showapi.com/guides/cnseg-free-tier-2663) > 本系列共 14 篇:查看[免费中文分词(文本处理)API 指南总目录](https://www.showapi.com/guides/cnseg-guides-2663)