ElasticSearch之-倒排索引
例如有如下三个文件:文件就是文档,存储在es中的一行一行的数据
文件A:通过Python django搭建网站
文件B:通过Python scrapy爬取网站数据
文件C:scrapy-redis分布式爬虫
现在我们要查询,带有Python的文件,正常是对每个文件进行遍历,每个文件遍历一次,如果文件特别大,每个文件有一亿个字符,总共有一亿个文件,双重for循环,每个我们都要遍历,非常消耗资源
在存储文件之前,先对文件进行分析,将文件分词,对分词建立索引,例如下面一句话
1 今天是星期天我们出去玩
2 明天是星期天,放假
3 今天天气很晴朗
4 xxx
5 他们出去玩了
文章1,文章3 | |
---|---|
星期天 | 文章2 |
关键词 | 文章 |
出去玩 |
实际上es在做存储的时候,更详细,如下表
文章 | |
---|---|
今天 | (文章1,<2,10>,2) (文章3,<8>,1) 文章1的第二个和第十个位置,文章3的第八个位置 |
星期天 | (文章2,<12,25,100>,3) |
出去玩 |
今天出现在哪个文章,出现的位置和出现的次数
1 大小写转换问题,如python和Python应该为同一个词
2 词干抽取,looking和look应该处理为同一个词
3 分词,如 屏蔽系统 是屏蔽 和系统两个词还是 为屏蔽系统一个词
4 倒排索引文件过大,需要压缩编码