创建索引的步骤:
0.创建分词器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
1.创建Directory,索引存放的位置
Directory directory = FSDirectory.open(new File("E:/Lucene/demo"));
2.创建IndexWrite,索引写入器
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);
IndexWrite write = new IndexWriter(directory,iwc);
3.创建Document对象
Document doc = new Document();
4.给Document添加Field
doc.add(new Field("name",names[i],Store.YES,Index.ANALYZED)); --添加字符串
doc.add(new NumericField("attach",Store.YES,true).setIntValue(23)); --添加整数
doc.add(new NumericField("attach",Store.YES,true).setDoubleValue(2.5d)); --添加双精度浮点
doc.add(new NumericField("attach",Store.YES,true).setFloatValue(3.6f)); --添加单精度浮点
doc.add(new NumericField("attach",Store.YES,true).setLongValue(44)); --添加长整型
doc.add(new NumericField("date",Store.YES,true).setLongValue(201254221)); --添加日期
doc.setBoost(2.5); --加权
5.添加文档到索引
writer.addDocument(doc);
6.提交或者关闭IndexWrite写入器(只有这样,索引才会正常创建)
writer.commit();
writer.close();
知识点
一、第0步骤的分词器(可以自定义分词器,重难点)
二、第1步骤创建索引文件目录(单例模式创建)
三、给Document添加域(不同数据类型的域值操作)
单例模式创建Directory、IndexReader、IndexSearcher代码:
private static IndexReader reader;
private static Directory directory;
static{
try {
directory = FSDirectory.open(new File("E:/Lucene/demo"));
reader = IndexReader.open(directory);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取索引目录
* @return
* @author:qiuchen
*/
public static Directory getDictionary(){
return directory;
}
/**
* 获取读取器
* @return
* @author:qiuchen
*/
public static IndexReader getIndexReader(){
return reader;
}
/**
* 获取查询器
* @return
* @author:qiuchen
*/
public static IndexSearcher getIndexSearcher(){
try {
if(reader != null){
reader = IndexReader.open(directory);
}else{
IndexReader ir = IndexReader.openIfChanged(reader);
if(ir != null){
reader.close();
reader = ir;
}
}
return new IndexSearcher(reader);
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 关闭查询器
* @param searcher
* @author:qiuchen
*/
public static void closeSearcher(IndexSearcher searcher){
try {
if(searcher != null){
searcher.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 关闭写入器
* @param indexWriter
* @author:qiuchen
*/
public void closeWrite(IndexWriter indexWriter){
try {
if(indexWriter != null){
indexWriter.close();
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
`org`目录则很可能包含了Lucene库的类文件结构,按照包名组织,便于Java虚拟机加载和运行。 在实际应用中,开发者可以根据项目需求选择适合的Lucene版本。例如,如果对内存效率有较高要求,2.9.4的内存索引功能可能...
总的来说,Lucene 3.0.2是构建全文搜索引擎的强大工具,其核心库提供了丰富的功能,而演示程序则为学习和实践提供了便利。无论是对单个文件的索引,还是在Web环境中的集成应用,Lucene都展现出了其灵活性和实用性。...
通过深入学习Lucene 4.4.0和Java核心库,开发者可以更好地理解和利用这些工具,构建高效、可扩展的全文搜索引擎和应用程序。无论是对于搜索技术的专研,还是Java编程的提升,这都是非常有价值的学习资源。
`lucene-core-2.4.1.jar`是Lucene的核心库,包含了Lucene的基础组件和API,如文档处理、索引操作、查询构造等,这些是MMAnalyzer进行分词工作所必需的。 在实际项目中,正确导入这两个JAR包是确保MMAnalyzer正常...
其中,`org.apache.lucene.index.memory`包下包含了一系列用于内存索引操作的核心类,如`MemoryIndex`和`MemoryReader`。`MemoryIndex`类用于构建和管理内存中的索引,而`MemoryReader`则负责读取和查询这些索引。...
总的来说,"apache-lucene-analyzers.jar"是Apache Lucene库的重要组成部分,它提供了丰富的文本分析工具,使得开发人员可以构建出高效、精准的全文搜索引擎。通过对文本的智能处理,它能帮助用户找到他们真正想要的...
5. **内存与磁盘存储(Memory & Disk Storage)**:Lucene利用`RAMDirectory`和`FSDirectory`等类管理索引在内存和磁盘上的存储,以平衡性能和资源消耗。 为了在Eclipse中查看和理解这些源码,我们需要进行以下步骤...
Apache Lucene是一个开源全文搜索引擎库,它为开发者提供了在各种应用程序中实现全文搜索功能的工具。这个"lucene-5.5.3.zip"压缩包包含了Lucene 5.5.3版本的所有组件和资源,使得开发人员可以方便地集成到自己的...
- 将编译生成的jar文件添加到你的Java项目类路径中,或者如果你使用的是现代的构建工具如Maven或Gradle,可以在pom.xml或build.gradle文件中添加对应的依赖。 4. **基本概念**: - **索引**:Lucene的核心是建立...
总结,Lucene 3.0.1是一个强大而灵活的全文检索工具,它的核心在于倒排索引和高效的查询处理。通过源代码学习,开发者不仅可以掌握Lucene的工作原理,还能根据需求进行定制化开发。无论是构建搜索引擎还是提升现有...
它并非完整的搜索引擎,而是提供了一套强大的索引和搜索工具,允许开发者构建自己的搜索引擎。3.5.0版本是在2010年发布的,尽管现在已经有更新的版本,但3.5.0仍被许多项目所使用,尤其是那些对稳定性和兼容性有较高...
Java全文搜索引擎Lucene 3.0.0是一个强大且灵活的工具,不仅适用于大型数据集的搜索,也适用于小型应用的快速实现。通过深入理解和掌握Lucene的源码,开发者能够构建出高效、精准的全文搜索系统,提升应用程序的用户...
Lucene提供了索引和搜索文本的高级工具,它能快速地对大量数据进行全文检索,支持多种查询语法,包括布尔操作符、短语查询、近似查询等。 3.5.0是Lucene的一个版本号,每个版本可能包含性能优化、新特性和错误修复...
1. **lucene-core-5.0.0.jar**:这是Lucene的核心组件,包含了索引和搜索的基本功能。它包括文档的创建、索引、查询以及结果的排序和过滤。这个jar包提供了如Analyzer、IndexWriter、Directory、QueryParser等关键类...
你可以找到关于Lucene核心组件的详细信息,如Analyzer(分析器)用于文本预处理,Tokenizer(分词器)进行词汇分割,Filter(过滤器)进行额外的文本处理,以及Document(文档)、Field(字段)和IndexWriter(索引...
LUKE(Lucene Index Browser Utility Kit)是一个强大的Lucene索引浏览器和分析工具,它可以帮助开发者查看、分析、调试Lucene索引。"lukeall-3.5.0.jar"则是包含LUKE工具的完整版本,适用于Lucene 3.5.0。通过LUKE...
例如,如果只导入了MMAnalyzer而忽略了lucene-core-2.4.1.jar,那么在运行包含MMAnalyzer的代码时,系统可能会报找不到类的错误,因为MMAnalyzer的相关类定义在Lucene的核心库中。因此,确保正确地引入所有必要的...
5. **索引器(IndexWriter)**:用于创建和更新索引的类,负责读取文档,使用分词器处理内容,并将处理后的结果构建为倒排索引。 6. **查询解析器(QueryParser)**:用户输入的查询字符串会被转换成内部表示形式,...
《Apache Lucene 6.6.0:...总之,Apache Lucene 6.6.0版本以其强大、灵活的全文检索能力,为开发者提供了构建高效搜索引擎的工具。通过深入理解其核心机制和功能,开发者可以更好地利用这一技术,提升应用的搜索体验。