这两天第一次接触lucene...对这东西很感兴趣...于是下载了lucene-2.2.0-src.zip下来研究研究...
按照网上的例子敲了敲代码....
却一直出错提示"document.add(Field.Text(...)"行"找不到符号"
后来才明白原来网上的例子大都是lucene 1.4.3版本的...
新版本2.0已经抛弃了原来的一些方法...
于是看了看文档写了个简单的入门实例...
首先是为文件建立索引:TestLucene.java
package wolftou;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.util.Date;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.document.*;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
public class TestLucene {
public static void main(String[] args) throws Exception {
File indexDir = new File("D:\\test\\luceneIndex");//要建立索引的文件路径
File dataDir = new File("D:\\test\\luceneData"); //索引的保存路径
Analyzer luceneAnalyzer = new StandardAnalyzer();//为文档进行分词处理ChineseAnalyzer()还不会弄.就先用英文的试试
File[] dataFiles = dataDir.listFiles();
IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer,
true);//把文件加到索引中来.
long startTime = new Date().getTime();//记时测试建立索引的时间.
for (int i = 0; i < dataFiles.length; i++) {
if (dataFiles[i].isFile()
&& dataFiles[i].getName().endsWith(".txt")) {//为TXT文件进行索引.
System.out.println("Indexing file "
+ dataFiles[i].getCanonicalPath());
Document document = new Document();
Reader txtReader = new FileReader(dataFiles[i]);
document.add(new Field("path", dataFiles[i].getCanonicalPath()
.toString(), Field.Store.YES, Field.Index.TOKENIZED,
Field.TermVector.YES));//向document中加入"path"字段
document.add(new Field("contents", txtReader));//向document中加入"contents"字段..可以加很多字段.此处只加了两个
indexWriter.addDocument(document);//将document信息写入索引.
}
}
indexWriter.optimize();//建立完索引后要调用optimize()方法进行优化...
indexWriter.close();
long endTime = new Date().getTime();
System.out.println("it takes " + (endTime - startTime)
+ " milliseconds to create index for the files in directory "
+ dataDir.getPath());//输出建立索引耗时...
}
}
在建立好了索引的基础上进行简单的搜索...TestLuceneSearch.java
package wolftou;
import java.io.File;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.FSDirectory;
public class TestLuceneSearch {
public static void main(String[] args) throws Exception {
String queryStr = "wolftou";//要搜索的关键字...
File indexDir = new File("d:\\test\\luceneIndex");//生成的索引存放的路径...
FSDirectory directory = FSDirectory.getDirectory(indexDir);
IndexSearcher searcher = new IndexSearcher(directory);//打开索引进行搜索...
if (!indexDir.exists()) {
System.out.println("The lucene index is not exist");
return;
}
Term term = new Term("contents", queryStr.toLowerCase());//对contents字段时行搜索...
TermQuery luceneQuery = new TermQuery(term);
Hits hits = searcher.search(luceneQuery); //返回搜索结果
if (hits.length() == 0) {
System.out.println("not found any files with the Key of "
+ queryStr);
}
for (int i = 0; i < hits.length(); i++) {//输出搜索信息...
Document document = hits.doc(i);
System.out.println("File: " + document.get("path"));
}
}
}
阶段目标:好好研究下中文切词
分享到:
相关推荐
1. **索引构建**:Lucene提供了一个高效的文档索引过程,通过分词器将文本分解为关键词,并建立倒排索引,使得搜索能快速定位到包含目标关键词的文档。 2. **查询解析**:支持多种查询语法,包括布尔查询、短语查询...
- **Lucene**:Apache Lucene 是一个高性能、全功能的文本搜索引擎库,它为开发者提供了一个灵活且强大的工具包来构建自定义的搜索应用程序。 - **版本**:本书覆盖的是 Apache Lucene 3.0 版本,这是 Lucene 发展...
【标题】:“第一个Lucene 3.6 (3.X) 入门实例” 【内容详解】 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它为Java开发者提供了强大的文本检索功能,广泛应用于搜索引擎、信息检索系统等场景。...
创建索引是 Lucene 的第一步,这个过程称为索引构建。在 LuceneTest02 示例中,我们可能会看到如何读取数据源(如文件、数据库或内存中的数据),创建文档对象,并将每个文档的字段添加到文档中。接着,使用 ...
Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个高级的、可扩展的搜索程序开发框架,让开发者能够轻松地在应用程序中实现全文索引和搜索功能。...
以下是一个简单的示例代码,演示了如何使用Lucene搜索包含关键词"lucene"的文档: ```java public class TxtFileSearcher { public static void main(String[] args) throws Exception{ String queryStr = ...
1. Lucene:Apache Lucene是一个高性能、全文检索引擎的Java库,它提供了完整的搜索功能,包括索引、查询、排序等。开发者可以利用Lucene构建自己的搜索引擎,或者将其嵌入到现有的应用程序中。 2. MMSEG4J:MMSEG4...
- **Analyzer**:文本分析器是Lucene处理文本的第一步,它负责将输入的字符串分解为一系列的词项(tokens)。在5.2.1版本中,包括了`StandardAnalyzer`和`SimpleAnalyzer`等,适用于不同语言和应用场景。 2. **...
1. **创建索引**:这是使用Lucene的第一步,我们需将要搜索的数据转换为索引。在Lucene 2.0中,这通常涉及读取数据(例如文本文件或数据库记录),然后使用`IndexWriter`将这些数据分词并存储为倒排索引。倒排索引是...
如果第一次执行上述程序,指定create为false,由于指定的索引目录下面缺少被追加索引的索引文件,将会抛出异常: Exception in thread "main" java.io.FileNotFoundException: no segments* file found in org....
创建索引是Lucene的第一步,这涉及到对文档数据的读取、分析和存储。你需要定义一个`Document`对象,然后添加各种字段,如`Field("title", "文档标题")`,`Field("content", "文档内容")`等。接着,使用`IndexWriter...
Lucene.NET 是一个高性能、全文检索库,它是Apache Lucene项目在.NET平台上的实现。作为一个开源的搜索引擎框架,Lucene.NET为开发者提供了强大的文本搜索功能。而在处理中文文档时,由于中文词汇间的无明显空格分隔...
标题中的“lucene第一步---5.中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是...
在这个系列中,我们特别关注了Lucene的分词器,尤其是第三部分——"Lucene分词器3"。 Lucene作为一款强大的全文搜索引擎库,其核心功能之一就是对输入的文本进行有效的分词处理,以便于后续的索引和搜索操作。分词...
- **分词**: Lucene使用Analyzer进行分词,将文本分解为关键词,这是建立索引的第一步。 - **倒排索引**: Lucene最核心的索引结构,它将每个关键词与包含该关键词的文档对应起来,便于快速找到包含特定关键词的文档...