http://www.programgo.com/article/81033150113/
Lucene原理
1 反向索引
_ 字符串到文件的映射
左边的称为“字典”,用户要搜索的词语,而右边就是所有包含该次的文档的list,称为“倒排表posting List”.查找lucene和solr就3步
1. 查找包含lucene关键字的文档链表
2. 查找包含solr关键字文档链表
3. 合并链表中相同的
_ 相对扫描多了个索引过程,但是对于大数据索引只要创建一次,索引的更新可以是增量的。
2 创建索引
2.1 索引文档建立(txt,doc,xsl等)
4. 文档可以使pdf,doc,xsl,txt等格式
5. lucene的基本是纯全本,我接触的
6. 从数据库中导入数据建立索引
2.2 对文档进行分词(中文分词,英文分词等)
中文分词组件:
中文分词算法分类:
http://www.cnblogs.com/lvpei/archive/2010/08/04/1792409.html
http://www.iteye.com/news/9637
2.3 对词语进行语言处理(还原词语如cars->car,去掉停用词等)
2.4 索引创建
2.4.1 利用词语(Term)创建字典
_ Term词语对应的document的id
_
_ 对字典安装字母排序
_ 合并相同的词,统计词频等
Document frequery是该词语出现在多个个文档中
frequery是改词语在每个文档中出现的次数
2.4.2 对字典按字母排序
2.4.3 合并相同的词(Term)成为文档倒排(Posting List)链表
3 搜索索引
3.1 输入查询语句(lucene and solr)
3.2 对查询语句进行语法,词法,语言处理
3.2.1 词法分析,分析出单词和关键字
3.2.2 语法分析,根据查询语法构造语法树
3.2.3 语言处理同索引过程中的语言处理几乎相
3.3 搜索索引,等到符合语法树的文档
3.4 对搜索结果排序
_ 搜索中主要的词有不重要的词
_ 一个词的权重计算过程
1. Term Frequency (tf):即此Term 在此文档中出现了多少次。tf 越大说明越重要。
2. Document Frequency (df): 即有多少文档包含次Term。df 越大说明越不重要。
3.