文件名搜索分词设计
来源:互联网 发布:js forech 编辑:程序博客网 时间:2024/05/18 01:18
期望目标:能够实现String.contains操作。
举例:”sd.mp4” 不管是搜”s”、”m”、”.”、”d.m”、”mp”都应该可以搜出该关键词。核心难度在于倒排索引的关键词覆盖。
参考内部IM的搜索机制如下:
由于IM搜索主要用于群名、人名,垃圾数据少,并且多为中文,因此可以对中文进行拼音提取,对英文进行多段冗余。
这样做有两个好处,第一,开发量低;第二,可以省去搜索补全的部分功能,直接按拼音或缩写进行查询。
但是也有一些缺点,第一,汉字的拼音冗余(相对于搜索补全功能单独做);第二,英文高度冗余(相对于对英文单个字母进行分词)
但是由于人名、群名数据的固有特点,缺点非常非常不明显(英文少,汉字重复率低)。
但是对于文件搜索,这种方式并不适合,原因如下:
第一,不同于人名,文件名重复的内容非常多,会有大量无用拼音产生。
第二,不同于人名,文件名有非常多的“英文”,高度冗余会造成索引内容过多(排队握手问题,指数级增长)。
在这个场景下,更合适的方法是每个字符进行倒排索引,每个字符都作为一个词。然后搜索时使用和顺序相关的“match_phrase”。
那如何对每个字符进行分词呢?
ik、ansj中并没有找到类似的Token化方法,于是有了自己写分词器的念头
但是在浏览ES相关标准的时候,发现了非常简单的自定义分词器的方法,定制后的分词器如下(原链接):
{ "settings": { "analysis": { "tokenizer": { "filename_tokenizer": { "type": "pattern", "pattern": ".", "group": "0" } }, "analyzer": { "filename_analyzer": { "type": "custom", "tokenizer": "filename_tokenizer", "filter": [ "standard", "lowercase", "stop" ] } } } }}
⚠ 交付ES索引的数据已经能够保证合法性,所以不需要任何校验
0 0
- 文件名搜索分词设计
- 面向搜索的中文分词设计
- 搜索分词
- 搜索分词技术
- mysql分词搜索实例
- Solr--分词与搜索
- 分词:一种分词词库设计
- 遍历文件夹搜索文件名
- 文件名匹配搜索
- 文件名搜索利器-SearchEverything
- Everything文件名搜索软件
- Clucene实现中文分词搜索
- Clucene实现中文分词搜索
- Clucene实现中文分词搜索
- Clucene实现中文分词搜索
- Lucene 高亮 分词 搜索
- 搜索引擎之分词设计
- 搜索本地文件夹下文件名
- hdu 5532 Almost Sorted Array【思维+模拟】
- 如果SM30出现“不可修改”提示的解决方案之一
- LaTeX技巧168:如何让行间公式左对齐
- HDOJ 1212 Big Number【同余定理】
- TabLayout的简单使用
- 文件名搜索分词设计
- 发现一个很棒的网站,技术 + 音乐 + 其他一切
- 通过反射调用setter及getter方法
- HTML+CSS实现图片下半部分遮罩文字效果(仿微信推送信息的图片文字效果)
- 左孩子右兄弟表示多叉树查找返回下一个节点
- 学习笔记-斯坦福iOS7-第十五课:MapKit和嵌入Segue
- Gson——偷个懒,常用查询
- “the import java.io cannot be resolved”错误的解决方法
- [Misc]利用cmdline,将参数从preloader传递到kernel