1. Lucene索引原理
http://blog.youkuaiyun.com/geekwang/archive/2008/11/29/3410187.aspx
1) 倒排文件索引结构
2) 关键词, 文章号[出现频率], 出现位置
3) 关键字是按字符顺序排列的(lucene没有使用B树结构),因此 lucene可以用二元搜索算法快速定位关键词
4) 减小索引文件的大小,Lucene 对索引还使用了压缩技术
2. Lucene:基于Java的全文检索引擎简介
http://www.chedong.com/tech/lucene.html
Index
IndexWriter write = new IndexWriter(indexPath, new SimpleAnalyzer(), false);
Document doc = new Document();
doc.add(Field.Text("body", (Reader) new InputStreamReader(is)));
writer.addDocument(doc);
Search
Searcher searcher = new IndexSearcher(indexPath);
Query query = QueryParser.parse(queryString, "body", new SimpleAnalyzer());
Hits hits = searcher.search(query);
hits.doc(i).get("path")
Merge Index
IndexWriter indexWriter = new IndexWriter(to, sa, false);
FSDirectory[] fs = { FSDirectory.getDirectory(from, false) };
indexWriter.addIndexes(fs);
indexWriter.optimize();
3. 亿级数据的高并发通用搜索引擎架构设计
http://www.kuqin.com/searchengine/20090215/35132.html
Index
信息处理入队列-->
信息写入搜索引擎数据存储层Tokyo Tyrant,异步入MySQL主表作备份, 也写增量表-->
每1分钟对增理表作索引,每3小时合并主索引且清空增量表
Search
查询Sphinx索引服务,取得满足查询条件的搜索引擎唯一ID (类别ID+原数据表主键ID) -->
通过Memcache协议一次性从Tokyo Tyrant中mget取回ID号对应的文本数据
4. 常用的分类算法
支持向量机(SVM),朴素贝叶斯(NB),神经网络(NN),K近邻(KNN),决策树(Decision Tree)