官方网站:Apache Lucene - Welcome to Apache Lucene
使用版本:lucene-5.5.5 (Index of /dist/lucene/java/5.5.5)
下载源代码
添加图片注释,不超过 140 字(可选)
一个是发布版,一个源代码版本,看具体需求:
添加图片注释,不超过 140 字(可选)
找到Demo目录下的TestDemo.java:
提供了简单的搜索样例:
其中testIndexSearch()中,IndexFiles.main则是建立索引(只有建立索引后才可以进行查询)
其中createTempDir("");表示创建索引存放的目录
main方法中: -docs 后面的参数表示索引文件的路径(dir.toString()),-index:后面的参数表示索引目录:(indexDir.toString())(-index可以理解为书签 存放的目录 )
比如文件索引较多时,比如 需要检索的文件目录为 /2024/月/日/ (这个时候可以每个目录尽力一个索引目录)
IndexFiles.main(new String[] { "-docs", "/2024/06/02", "-index","/indexdir/2024/06/02"}); 这样每个目录建立一个索引则进行检索的时候无需全部查询,只需查询这个/indexdir/2024/06/02索引目录,(可以理解为去图书馆,你不可能通过一个书名来找,肯定会根据 分类 比如 数学、语文,或者大学小学等各种分类来缩小范围)
SearchFiles.main(new String[] {"-query", query, "-index", indexPath.toString()});
query:查询的关键词 比如 lucene, indexPath.toString():索引目录 /indexdir/2024/06/02
这样lucene检索的时候只会根据索引目录来查找,而不是全部遍历搜索。
搜索出来显示:
添加图片注释,不超过 140 字(可选)
其中 hits[i].score:对应查询到的文件匹配分值。
添加图片注释,不超过 140 字(可选)
读取文件内容,headle进行内容高亮处理:
添加图片注释,不超过 140 字(可选)
只显示contents内容,也可以高亮匹配标题。
搜索效果
demo代码只支持txt类型文档,如果要支持pdf,word,xls,ppt等则需要在建立索引情况中读取文档内容时,转换文件内容至文本进行索引建立:
在IndexFiles.java:
内容转换读取建立索引
这里我做了doc,pdf ,xls等格式判断,如果要做其他格式,则添加相应内容判断
,其中:
读取word内容
读取Excel
读取Pdf内容(只读取到txt内容)