今天星期天抽空写了一个关于创建索引和搜索的简单示例,描述了创建索引和搜索的每一个步骤,以后慢慢详细介绍每个细节的实现,废话不多说了,进入重点
1.用到的Jar:
2.创建索引和搜索代码如下:
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import java.io.File;
import java.io.FileReader;
/**
* 创建索引和搜索
* Created by Administrator on 14-3-12.
*/
public class HelloLucenes {
/**
* 创建索引
*/
public void createIndex(){
try
{
//1.创建Directory
Directory directory=FSDirectory.open(new File("d:/lucene/index0"));
//2.创建IndexWriter
IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_47, new StandardAnalyzer(Version.LUCENE_47));
IndexWriter writer=new IndexWriter(directory,iwc);
//3.创建Document对象
Document document=null;
//4.为Document添加Field
File file=new File("d:/lucene/data");
for(File f:file.listFiles())
{
document=new Document();
document.add(new StringField("path", f.getAbsolutePath(), Field.Store.YES));
document.add(new StringField("filename",f.getName(), Field.Store.YES));
document.add(new TextField("content",new FileReader(f)));
//5.通过IndexWriter添加文档到索引中
writer.addDocument(document);
}
writer.close();
}catch (Exception ex)
{
ex.printStackTrace();
}
}
/**
* 创建搜索
*/
public void createSearch()
{
try{
//1、创建Directory
Directory directory= FSDirectory.open(new File("d:/lucene/index0"));
//2、创建IndexReader
IndexReader reader=DirectoryReader.open(directory);
//3、根据IndexReader创建IndexSearch
IndexSearcher searcher=new IndexSearcher(reader);
//4、创建搜索的Query(赤岸感觉Parser来去顶要搜索的文件的内容,第二个参数标示搜索的域)
QueryParser parser=new QueryParser(Version.LUCENE_47,"content",new StandardAnalyzer(Version.LUCENE_47));
Query query=parser.parse("father");
//5、根据search搜索并且返回TopDocs
TopDocs tds=searcher.search(query,10);
//6、根据TOpDocs获取ScoreDoc对象
ScoreDoc[] sds=tds.scoreDocs;
for(ScoreDoc sd:sds)
{
//6、根据search和ScordDoc对象获取具体的Document对象
Document d=searcher.doc(sd.doc);
//8、根据Document对象获取需要的值
System.out.println(d.get("filename")+"["+d.get("path")+"]");
}
//9、关闭reader
reader.close();
}catch (Exception ex)
{
}
}
}
3.创建测试类代码如下:
import org.junit.Test;
/**
* 单元测试类
* Created by Administrator on 14-3-12.
*/
public class HelloLucenesTest {
@Test
public void hello(){
HelloLucenes hl=new HelloLucenes();
hl.createIndex();
}
@Test
public void search(){
HelloLucenes hl=new HelloLucenes();
hl.createSearch();
}
}
4.目标数据文件如下图所示:
5.运行创建索引方法的结果如下图:
6.运行搜索方法结果如下:
相关推荐
3. Function-Based索引:基于函数的结果创建索引,适用于需要对列进行特定计算的查询。 4. Unique索引:确保索引列的唯一性,防止插入重复值。 5. Clustered索引(非Oracle特性):在某些数据库系统中,索引决定了...
资源名称:Lucene实战视频教程资源目录:【】01_lucenc简介和创建索引初步【】02_lucene简介和搜索初步【】03_lucene索引_创建_域选项【】04_lucene索引_的删除和更新【】05_lucene索引_加权操作和Luke的简单演示...
【搜索引擎提交入口】是网站管理员或SEO优化人员用于将新创建或更新的网站提交到各大搜索引擎,以便于被搜索引擎快速收录和索引的关键途径。这些入口是搜索引擎为网站所有者提供的一个官方渠道,通过提交URL,可以...
Oracle Text的工作流程包括创建索引、插入文档、查询和更新索引等步骤。 1. 创建索引 在Oracle中,首先需要创建一个Text索引,定义索引的表和字段,以及语言环境。索引类型可以是反向索引或位图索引,反向索引适用...
首先,初次使用时要允许软件创建索引,这一步对后续的快速搜索至关重要。其次,定期更新索引可以保持搜索结果的准确性。最后,如果系统资源有限,可以在不使用时关闭软件的后台服务,以减少系统负担。 在日常工作中...
这一章会介绍Lucene的API用法,包括文档的创建、索引的建立、查询解析和结果排序等功能。还会探讨Lucene的高级特性,如多字段搜索、近似搜索、模糊搜索和 faceted search(分类搜索)。此外,还会讲解如何利用Lucene...
3. **建立索引模块**:利用Lucene提供的索引功能,对预处理后的文本信息进行中文分词,并创建索引。 4. **搜索模块**:提供用户界面供用户输入查询条件,然后在索引数据库中进行搜索。 5. **结果显示模块**:将搜索...
在这个项目中,Lucene被用来创建索引并执行对索引的搜索操作。胡杨负责实现这一部分,包括页面索引的建立和搜索功能。 3. **Tika页面解析器**: Tika是一个能够解析多种格式的元数据和内容的库。在搜索引擎实现...
1. **索引构建器**:这部分代码负责读取网站内容,创建索引数据库。索引数据库中存储了文档的关键信息,如单词、出现位置、频率等。 2. **查询处理器**:当用户输入查询时,这部分代码解析查询字符串,匹配索引,...
在前一篇文章中,我们探讨了Nutch开源搜索引擎在进行增量索引更新(recrawl)时遇到的问题及其初步解决方案。然而,在实际操作过程中发现,尽管解决了基本的增量更新逻辑,但在执行`indexmerge`命令后,新旧索引合并...
它们通过收集、整理和索引网络资源,创建庞大的数据库,并提供方便的查询接口,使用户能够在海量数据中快速定位目标。 【搜索引擎的类型】 1. **索引式搜索引擎**:也叫机器人搜索引擎,如Google,主要通过网络...
`IndexWriter`用于创建和更新索引,而`Directory`是存储索引的地方,常见的实现有文件系统和内存。`Document`对象代表单个要索引的文档,可以包含多个字段,如标题、内容等。`Field`类定义了字段的类型和特性,如...
Lucene.Net是Lucene的.NET版本,它为.NET开发者提供了与Java版本相似的功能,包括文本分析、索引创建、搜索和排序等。 在压缩包的文件列表中,可以看到多个与Lucene.Net相关的文件,如`CharStream.cs`、`...
4. **创建索引**: 使用IndexWriter将处理后的文档写入索引。 5. **查询处理**: 用户输入查询,QueryParser解析成查询对象。 6. **搜索执行**: Searcher使用查询对象在索引中查找匹配的文档。 7. **结果排序**: ...
3. **索引构建**:搜索引擎需要创建一个高效的索引结构,以便快速查找相关文档。常见的索引结构有倒排索引,它将单词映射到包含这些单词的文档集合。C#中可以自定义数据结构实现,或者使用Lucene.NET这样的全文检索...
**lukeall** 是一个非常实用的开源工具,主要用于查看和分析Apache Lucene创建的索引。Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎和信息检索系统。而lukeall则是Lucene的一个扩展,它提供了一个...
1. **创建索引(Indexing)**:Lucene首先读取文档内容,通过Analyzer进行分词处理,然后将这些词元存储在倒排索引(Inverted Index)中。倒排索引是一种高效的数据结构,它为每个词元维护一个文档列表,记录包含该...
2. **网络爬虫技术**:为了收集和索引大量图片,需要编写能够自动访问并下载网页的程序,这涉及到HTTP协议的理解,以及解析HTML、CSS选择器和正则表达式等技能。 3. **数据库管理**:抓取的图片和相关信息需要存储...