hello_luence 本地文本查找引擎的一个实例 lucene+nodejs
开始
- 为什么会有它
- 我有的时候会想查一些书、文章当中的字,看看这个字到底是怎么用的。
- 在网上找到一些html版的书的网站,当用wget抓下来之后,花了很长时间,内容很多,文件很多。
- 当然在linux下,有很好的文本查找、处理的工具,比如使用以下命令。
- 虽然方法简单但每次每个历遍,东西太多时间太长。
- 有个lucene项目,基于Java的全文索引工具包,虽不是搜索引擎,但开源搜索Solr、Nutch均基于它。
尝试使用lucene
- 暑假之前借了本 Lucene IN ACTION中文版,其实书已经很老了,但作为参考资料还是有作用的。
- 在下载
Apache Lucene 4.3
(4.4已经available),docs/core/index.html
是Lucene的核心API文档 - 用 Eclipse 就可以导入
core/lucene-core-4.3.0.jar
和analysis/common/lucene-analyzers-common-4.3.0.jar
等jar包 - Lucene 自带的Demo 在
- docs/demo/src-html/org/apache/lucene/demo/IndexFiles.html
- docs/demo/src-html/org/apache/lucene/demo/SearchFiles.html 是很好的入门资料
学习Lucene的参考
- 倒排索引
-
Lucene API
- 实战 Lucene,第 1 部分: 初识 Lucene
- Lucene:基于Java的全文检索引擎简介
- 使用 Apache Lucene 搜索文本
- 深入 Lucene 索引机制
- Lucene中文分析器的中文分词准确性和性能比较
- Lucene Payload 的研究与应用
- 漫话中文自动分词和语义识别(上):中文分词算法
- 等等
使用lucene成果
- 建立索引,多线程
- 硬件信息
- CUP: 800MHz * 2 AMD Athlon™ II X2 240 Processor ,
cat /proc/cpuinfo
- MEM: 1801072 kB ,
cat /proc/meminfo
- SDA: Hitachi HDT721032SLA380 320 GB ,
sudo smartctl -a /dev/sda
- 系统和软件
- Linux 3.2.0-52-generic #78-Ubuntu SMP i686 athlon i386 GNU/Linux ,
uname -a
java version “1.7.0_25” ,
java -version
- OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
- OpenJDK Client VM (build 23.7-b01, mixed mode, sharing)
执行的命令
time java -Xms512m -Xmx1024m -jar lucene.jar -AI /media/linux_lenovo/file /media/linux_lenovo/L_index
- 对象 10000个最终目标文件,平均30KB
输出
- real 1m28.123s
- user 1m27.045s
- sys 0m3.392s
执行搜索
time java -Xms512m -Xmx1024m -jar lucene.jar -SQPS /media/linux_lenovo/L_index 张飞* contents "";
- 输出
- real 0m0.521s
- user 0m0.604s
- sys 0m0.076s