最近看了一下Lucene,所以决定自己实现一个简单的博客搜索系统,大体如下:
首先,我们先来了解一下Lucene,官网:http://lucene.apache.org/core/
打开一看,全篇英文,一脸懵逼,小编我立刻后悔当初没有好好学习英语了,但我还是硬着头皮慢慢看,大概理解了一下:
Apache Lucene是一个完全用Java编写的高性能,功能齐全的文本搜索引擎库。它是一种适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台搜索,最重要的是它是一个可供免费下载的开源项目(开源什么的最喜欢了,哈哈。。。),个人感觉,它就是一个用于全文检索的工具包。
学一门东西,首先先学会用,然后去了解原理(纯属个人观点),其实官方提供了详细的API:
打开核心包可以看到官方给的demo,大致了解了用法:
OK,话不多说,上代码,首先我们需要引入依赖:
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>7.1.0</version>
</dependency>
这里先创建一个Lucene的工具类,用来创建索引和执行搜索功能(这里的文件类型为txt,具体文件具体分析):
public class LuceneUtil {
private static IndexWriter indexWriter;
private static IndexWriterConfig indexWriterConfig;
private static FSDirectory fsDirectory;
private static Analyzer analyzer;
private static final String DIR = "/luceneIndex";
//为文件创建索引
public static void createIndex(File file,String title){
String name = file.getName();
//针对txt文件进行索引创建
if(name.endsWith(".txt")){
String content = txtToString(file);
String id = name.substring(0,name.lastIndexOf("."));
Document document = new Document();
document.add(new StringField("id",id, Field.Store.YES));
document.add(new StringField("title",title, Field.