背景
OpenSearch是一个以云服务方式提供给广大开发者使用的搜索引擎平台。在搜索引擎中,分词是最基础但很重要的功能,其效果会直接影响文档的召回。分词歧义会导致引擎无法召回目标文档。例如:
乒乓球拍卖完了 ==> 乒乓球/拍卖/完了
乒乓球拍 ==> 乒乓/球拍
在上面的case中,短语“乒乓球拍”不同的上下文中分词的结果不一样。假如文档的内容为“乒乓球拍卖完了”,用户通过查询词“乒乓球拍”是无法召回该文档的。
OpenSearch的用户来自各行各业,类似上述例子的场景会被不同的用户遇到。分析线上query时,发现不少用户由于分词效果不理想,对同一个字段用不同的分词器建了多个索引(如单字分词,模糊分词,中文基础分词),查询时同时查多个索引已达到召回文档的目的。这种做法不仅会消耗更多的系统资源,而且通常效果会不太好。
支持用户对分词干预显得尤为重要。OpenSearch内部是一个多租户多应用共用的系统,因此,还需要确保应用间的干预是完全隔离的,不会互相影响。