import java.io.File;
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.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
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.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class LunceUtil {
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
public void searchContext(String indexPath,String searchContext) throws IOException{
Directory directoryIndex=FSDirectory.open(new File(indexPath));
DirectoryReader ireader = DirectoryReader.open(directoryIndex);
IndexSearcher isearcher = new IndexSearcher(ireader);
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "fieldname", analyzer);
Query query=null;
try {
query = parser.parse(searchContext);
} catch (ParseException e) {
e.printStackTrace();
}
ScoreDoc[] hits = isearcher.search(query, null, 10000).scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document hitDoc=null;
hitDoc = isearcher.doc(hits[i].doc);
System.out.println(hitDoc.get("fieldname"));
}
ireader.close();
directoryIndex.close();
}
public void createIndex(String indexPath,String context) throws IOException{
//////////////创建索引/////////////////////////////////////////////////
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_CURRENT, analyzer);
//来将文档加入索引
//生成一个索引写入器
// Analyzer是分析器,它的作用是把一个字符串按某种规则划分成一个个词语,并去除其中的无效词语,
IndexWriter iwriter=new IndexWriter(FSDirectory.open(new File(indexPath)), config);
/////////////////////////////////////////////////////////////
//从网站上抓取的内容用户进行搜索创建索引,也是以Document列表的形式返回。
// Document doc1 = new Document();
// Document doc2=new Document();
// String text1 = "Robitussin leyiduo";
// String text2="tis a indexed.";
// doc1.add(new Field("fieldname", text1, TextField.TYPE_STORED));
// doc2.add(new Field("fieldname", text2, TextField.TYPE_STORED));
// iwriter.addDocument(doc1);
// iwriter.addDocument(doc2);
Document doc = new Document();
doc.add(new Field("fieldname",context,TextField.TYPE_STORED));
iwriter.addDocument(doc);
iwriter.close();
}
}
分享到:
相关推荐
创建索引是Lunce的第一步。以下是一个简单的示例,演示如何索引一个文件: 1. 导入必要的库: ```java import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document...
它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是当前非常流行的、免费的Java信息...
2. **创建索引写入器(IndexWriter)**:使用 Analyzer 创建 IndexWriter 实例,设置索引目录和其他配置参数。 3. **添加文档(Document)**:每个要索引的文件被视为一个 Document 对象,包含多个 Field,每个 ...
以下是一个简单的示例,展示了如何使用Lucene创建索引: ```java IndexWriter writer = new IndexWriter("/data/index/", new StandardAnalyzer(), true); Document doc = new Document(); doc.add(new Field("title...
2. **配置环境**: 在项目中引入Compass及相关jar包,进行必要的环境配置,如设置搜索索引存储位置、初始化Compass环境等。 3. **实体类标注**: 使用Compass提供的注解如`@Searchable`、`@SearchableId`、`@...
3. **查询分析**:用户可以直接在工具中输入查询语句,查看查询如何被解析并转换为内部的查询树结构,这有助于理解Lucene的查询执行机制。 4. **术语浏览器**:它提供了对所有索引术语的可视化,包括出现频率、文档...
4. **索引写入(IndexWriter)**:用于创建或更新索引,它管理着索引的生命周期,包括添加、删除和更新文档。孔浩的讲解可能会涵盖如何正确使用IndexWriter避免数据丢失和提高性能。 5. **查询解析(QueryParser)*...
搜索时,Lucene会将查询与索引中的词项进行匹配,找出包含查询词的文档。然后,根据相关性评分(Scoring)对结果进行排序。相关性评分通常基于TF-IDF(Term Frequency-Inverse Document Frequency)算法,考虑词项在...
lucene-简单示例介绍,可提供初级的api,实现全文检索功能
1. **索引管理**:它允许用户创建、更新和删除Lucene索引,无需深入理解底层的实现细节。这使得非技术背景的用户也能轻松管理搜索索引。 2. **分布式支持**:在分布式环境中,Lucene Server可以处理跨多个节点的...
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
- 类与对象:理解类的定义、对象的创建及成员变量、方法的使用。 - 继承与多态:深入理解继承的概念,以及多态性在Java中的体现,如方法重写和重载。 - 封装:封装的基本原则和实现方式,包括访问修饰符的使用。 ...
技术:myeclipse+spring+struts2+hibnate+lunce+poi+ztree+mysql+jbpm 功能:基本信息的录入(poi导入)包括省、市、区,菜单导航树形结构,取派业务,lunce的信息检索,一件上传功能,工单的接收,等。。。。。