package gt.test.lucene;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
public class Test {
/**
* @param args
* @author Goodtiger
*/
public static void main(String[] args) {
try {
Analyzer analyzer = new StandardAnalyzer();
//将索引存在内存中
Directory directory = new RAMDirectory();
//将索引存在磁盘的话,用下面这句
//Directory directory = FSDirectory.getDirectory("/tmp/testindex", true);
IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
iwriter.setMaxFieldLength(25000);
Document doc = new Document();
String text = "This is the text to be indexed.";
doc.add(new Field("fieldname", text, Field.Store.YES,
Field.Index.TOKENIZED));
iwriter.addDocument(doc);
iwriter.close();
IndexSearcher isearcher = new IndexSearcher(directory);
// Parse a simple query that searches for "text":
QueryParser parser = new QueryParser("fieldname",analyzer);
Query query = parser.parse("text");
Hits hits = isearcher.search(query);
if(hits.length() == 1)
{
System.out.println("搜索\"text\"");
Document d = hits.doc(0);
System.out.println(d.get("fieldname"));
}else
{
System.out.println("没有搜索到结果");
}
// 遍历搜索结果:
for (int i = 0; i < hits.length(); i++) {
Document hitDoc = hits.doc(i);
System.out.println(hitDoc.get("fieldname"));
}
isearcher.close();
directory.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
在《开发自己的搜索引擎》一书中,通过`ch2-lucene入门小例子`,读者可以了解到如何使用Lucene 2.0创建简单的搜索引擎,例如建立索引、执行搜索等基本操作。而`myReserch-可用的网络搜索引擎`可能包含一个完整的搜索...
基于Java的全文索引引擎.doc lucene测试代码.txt lucene为数据库搜索建立增量索引.txt lucene数据库索引.txt 新闻系统全文检索的思绪.txt ... 关于lucene2.0的创建、检索和删除功能的完整实现.doc weblucene.txt
在Lucene 2.0及更高版本中,废弃了一些旧版本中的方法,如Field类的构造函数和一些静态方法。这要求开发者在使用时必须注意版本兼容性问题,确保使用的API与所安装的Lucene版本匹配。 ### Lucene的入门实例 #### ...
以下是一个简单的 Lucene 2.0 创建索引的例子: 首先,你需要在 Windows 系统的 C 盘创建一个名为 "s" 的文件夹,并放入几个文本文件。在这个示例中,我们创建了 "1.txt", "2.txt", "3.txt" 文件。每个文件的内容...
Apache License 2.0是Lucene采用的许可协议,它允许商业使用、修改和再分发,但要求保留原始的版权和许可声明,鼓励开源社区的协作和创新。 Apache License 2.0的特点在于其宽松性和互操作性,它不强制要求对修改后...
Lucene.Net 最初是一个开源项目,但在某个版本之后(如2.0)转为商业化,提供免费的 DLL 版本以及需要购买许可的源代码版本。 **1. Lucene.Net 的核心功能** Lucene.Net 主要用于创建和管理文本数据的索引,以便...
Elasticsearch是一款开源的分布式搜索引擎,基于Lucene库构建,具有实时、可扩展、分布式、RESTful接口等特性。它支持全文搜索、结构化搜索以及分析,广泛应用于日志分析、监控、数据可视化等多个领域。 **PHP7与...
例如,`java -classpath lucene-core-2.0.jar:commons-lang.jar:./bin helloworld`。确保所有依赖的JAR文件和当前目录(`./bin`)都被正确地包含在类路径中,以便Java虚拟机能够找到并加载相应的类。 2. **Tomcat...
EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...
Querydsl允许开发者使用静态类型的API来构建SQL、JPA、JDO、Lucene等查询。这种方式使得查询的编写和维护变得直观且易于理解,因为它们是用Java代码编写的,而不是字符串拼接。通过Querydsl,我们可以避免SQL注入...
- **Web 2.0时代**:随着Web 2.0概念的普及,CMS开始支持动态内容和用户交互。 - **现代CMS**:当前的CMS系统不仅能够管理内容,还提供了SEO优化、社交媒体集成等多种高级功能。 ##### 1.4 CMS的基本原理 CMS的...