按照网站提供的manual中的A Quick Tour of MG4J完成。
在mg4j的官方网站下载
binary tarball和
dependencies tarball,解压在本地硬盘。
以搜索mg4j的javadoc文档为例,
首先为要搜索的文件建立一个collection
java it.unimi.dsi.mg4j.document.FileSetDocumentCollection -f HtmlDocumentFactory
-p encoding=UTF-8 javadoc.collection D:\MG4J\mg4j-2.1.1-bin\mg4j-2.1.1\docs\*.html
因为搜索的是html文档,所以这里指定了HtmlDocumentFactory,并且直接写factory的名字不用加包名;指定的编码类型为utf-8;生成的collection文件名为javadoc.collection;D:\MG4J\mg4j-2.1.1-bin\mg4j-2.1.1\docs\*.html为要搜索的文件,如果还有可以直接在后面添加文件名。
运行后将生成javadoc.collection文件,这个文件就是一个包含要搜索的文件名的类型java实例序列化后的文件。
第二步,为要搜索的文件生成索引。
java -Xmx256M it.unimi.dsi.mg4j.tool.IndexBuilder --keep-batches
--downcase -s 10000 -S javadoc.collection javadoc
如果collection很大有数百万的文档,就要调整java的内存,以满足索引快速生成索引。
--keep-batches是为了查看生成索引时产出的临时文件,可以去掉。
--downcase是忽略大小写,搜索的时候STRING和string是一样的。
-s 10000设置了批量生成索引的大小。
-S javadoc.collection指定了collection文件为javadoc.collection。
javadoc为索引文件的文件名前缀。
生成的索引文件为javadoc-title.*和javadoc-text.*
第三步,启动查询器进行搜索
java it.unimi.dsi.mg4j.query.Query -h -i FileSystemItem
-c javadoc.collection javadoc-text javadoc-title
可以打开浏览器输入http://localhost:4242/Query进行搜索,Query类中内置了jetty可以提供web服务。也可以在命令行输入要搜索的词。
在运行上面的命令之前,一定要把dependencies tarball中的jar包加入到classpath中,才能正常运行。
我也试了在要搜索的html文档中加入了一些中文html文档,在搜索中文的时候还是有问题,搜索无法进行。
刚刚接触MG4J,还在阅读manual.....