Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。
Lucene的jar下载
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analyzers-common</artifactId>
<version>7.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>7.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-demo</artifactId>
<version>7.2.1</version>
</dependency>
Luke 查看lucene的图形界面 ,下载地址 https://github.com/DmitryKey/luke/releases (注意下载的版本要和lucene的版本一致)
在cmd 窗口输入 点击luke.bat 或走 java -jar luke-with-deps.jar(luke-with-deps.jar的路径要对)
Luke 导入索引
关于Lucene的原理http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623594.html 这篇文章说的很好 可以便于理解
Lucene创建索引
Directory dir = FSDirectory.open(Paths.get("E:/lucenete"));//获取索引目录 事先创建索引文件夹
IndexWriterConfig config = new IndexWriterConfig(new IKAnalyzer());//这里用了中文解析器
config.setOpenMode(OpenMode.CREATE_OR_APPEND);
IndexWriter indexWriter = new IndexWriter(dir, config);
File[] files = new File("E:/lucenet").listFiles();//获取文件夹下所有的文件
for (File file : files) {
if (!file.isDirectory() && !file.isHidden() && file.exists() && file.canRead() ) {
System.out.println("indexing..." + file.getCanonicalPath());
Document doc = new Document();
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "UTF-8")); //把text格式改为编码为utf-8 不然会乱码
doc.add(new TextField("contents",reader.readLine() , Store.YES));
doc.add(new Field("filename", file.getName(), TextField.TYPE_STORED));
doc.add(new Field("fullpath", file.getCanonicalPath(), TextField.TYPE_STORED));
indexWriter.addDocument(doc);
}
}
indexWriter.commit();//创建完要提交 不然没有数据
indexWriter.close();