创建索引这里是以一张表中两个字段创建一个索引
<%@ page language="java" pageEncoding="GBK"%>
<%@page import="org.apache.lucene.document.Document"%>
<%@page import="org.apache.lucene.document.Field"%>
<%@page import="org.apache.lucene.store.FSDirectory"%>
<%@page import="org.apache.lucene.store.Directory"%>
<%@page import="org.apache.lucene.index.IndexWriter"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.lucene.analysis.standard.StandardAnalyzer"%>
<%@page import="org.apache.lucene.analysis.Analyzer"%>
<%@ include file="/common/common.jsp" %>
<%
GoodsService goodsService = GoodsService.instance();
List<Goods> list = goodsService.getLatestList(1,200);
Directory directory = FSDirectory.open(new File("e:\\index"));
Analyzer analyzer = new StandardAnalyzer();
IndexWriter indexWriter = new IndexWriter(directory,analyzer,true);
long begin = System.currentTimeMillis();
for(int i=0;i<list.size();i++){
Goods goods = list.get(i);
Document doc = new Document();
Field id = new Field("id",goods.getId()+"",Field.Store.YES,Field.Index.NOT_ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS);
Field title = new Field("title",goods.getTitle(),Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS);
doc.add(id);
doc.add(title);
indexWriter.addDocument(doc);
}
long end = System.currentTimeMillis();
System.out.println("建索引需要的时间:" + (end - begin));
indexWriter.optimize();
indexWriter.close();
%>
实现搜索
<%@ page language="java" pageEncoding="GBK"%>
<%@page import="org.apache.lucene.document.Document"%>
<%@page import="org.apache.lucene.search.IndexSearcher"%>
<%@page import="org.apache.lucene.analysis.standard.StandardAnalyzer"%>
<%@page import="org.apache.lucene.analysis.Analyzer"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.lucene.queryParser.QueryParser"%>
<%@page import="org.apache.lucene.store.FSDirectory"%>
<%@page import="org.apache.lucene.store.Directory"%>
<%@page import="org.apache.lucene.search.Query"%>
<%@page import="org.apache.lucene.search.Hits"%>
<%@ include file="/common/common.jsp" %>
<%
String keyword = T.stringValue(request.getParameter("k"),null);
GoodsService goodsService = GoodsService.instance();
Goods goods = null;
if(keyword != null){
Hits hits = null;
Query query = null;
Directory directory = FSDirectory.open(new File("e:\\index"));
IndexSearcher indexSearcher = new IndexSearcher(directory);
Analyzer analyzer = new StandardAnalyzer();
try{
QueryParser queryParser = new QueryParser("title",analyzer);
query = queryParser.parse(keyword);
}catch(Exception e){
}
if(indexSearcher != null){
hits = indexSearcher.search(query);
if(hits.length() > 0){
out.println("搜索出来的结果为。。。。<br>");
if(hits.length() == 1){
Document doc = hits.doc(0);
//其实这个只要根据doc也可以获取到title字段,只是考虑一张表很多个字段,而只是拿几个出来建索引,要想获取详细的信息还必须查找数据库找到相应的字段
goods = goodsService.find(Long.valueOf(doc.get("id")));
if(goods != null){
out.println("{'id':"+goods.getId() +",'title':"+goods.getTitle()+"}<br>");
}
}else{
int length = hits.length();
for(int i=0;i<length;i++){
Document doc = hits.doc(i);
if(doc != null){
goods = goodsService.find(Long.valueOf(doc.get("id")));
if(goods != null){
out.println("{'id':"+goods.getId() +",'title':"+goods.getTitle()+"}<br>");
}
}
}
}
}
}
}
%>
分享到:
相关推荐
二、Lucene索引创建流程 1. 初始化:首先,我们需要导入Lucene库,并创建一个标准的Analyzer,例如StandardAnalyzer,它对输入的文本进行标准化处理。 2. 创建索引目录:索引数据会存储在一个Directory对象中,...
- 索引创建过程中可能会遇到各种异常,应添加适当的错误处理机制。 - 对于大量文档,可能需要考虑分批处理以避免内存溢出等问题。 通过以上步骤,我们可以有效地使用Lucene3.0来创建索引,从而提高文本数据的检索...
本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...
以下是关于使用Lucene实现索引查询的详细知识: ### 一、创建索引 创建索引是Lucene的核心过程,它涉及到以下步骤: 1. **定义索引目录**:首先,你需要指定一个目录来存储索引文件。这通常是一个文件夹,可以...
在这个压缩包文件中,包含的源代码着重展示了如何利用Lucene进行索引创建和搜索操作,这些都是Lucene的核心功能。 首先,让我们了解一下Lucene的索引创建过程。在Lucene中,数据被转化为一种便于搜索的结构——倒排...
下面是一个简单的Lucene5索引创建流程: 1. **创建Analyzer**: 首先,你需要选择或自定义一个Analyzer,以处理输入文本。例如,可以使用StandardAnalyzer来处理英文文本。 ```java Analyzer analyzer = new ...
总结,Lucene5 全文搜索 demo 展示了如何利用 Lucene 的核心组件创建和搜索索引。从索引的构建到查询的执行,每个步骤都涉及到对 Lucene API 的深入理解。通过学习这个示例,开发者可以进一步了解 Lucene 的工作原理...
以上就是关于“Lucene索引的简单使用”的详细介绍,包括其核心概念、创建和查询索引的步骤以及一些高级特性。希望对你理解和应用Lucene有所帮助。在实际开发中,可以根据需求选择合适的Analyzer,优化索引策略,以...
- Lucene的核心能力在于文档索引和查询,它提供了强大的API来实现高效的文档检索。 2. **XML简介** - XML(Extensible Markup Language,可扩展标记语言)是一种用来标记数据的语言,它定义了用于描述结构化文档...
- 为了提高搜索效率,可以在创建索引时设置适当的参数,如`IndexWriterConfig`的`OpenMode`(决定是否覆盖现有索引)和`IndexingOptions`(决定是否存储原始文档)。 - 在MyEclipse10中开发Lucene应用时,确保JDK...
在提供的压缩包"LuceneOldSearch"中,可能包含了使用旧版本Lucene实现的一个简单的搜索引擎示例。这个示例可能涵盖了从建立索引到执行查询的完整流程,以及如何处理文本数据和错误检查。学习这个示例能帮助开发者更...
Lucene是一个开源的Java库,提供了强大的文本分析、索引和搜索功能,被广泛应用于各种信息检索系统中。 第一章 引言 在信息爆炸的时代,搜索引擎成为人们获取信息的重要工具。Apache Lucene作为一款强大的全文搜索...
以下是一个简单的Lucene索引创建示例: ```java Directory indexDir = FSDirectory.open(new File(INDEXDIR)); IndexWriter writer = new IndexWriter(indexDir, analyzer, true, MaxFieldLength.LIMITED); File ...
5. **性能优化**:Lucene.NET提供了批量索引、缓存、内存管理等机制来提高性能,例如使用NRT(Near-Real-Time)搜索可以在不影响搜索速度的情况下实现近乎实时的索引更新。 6. **多语言支持**:除了使用...
通过以上步骤和技巧,我们可以使用 Lucene 实现一个强大的搜索引擎,提供类似百度的搜索体验。无论是在网站、应用还是大数据环境中,Lucene 都能以其高效的全文检索能力,为用户提供快速、准确的搜索结果。
总结来说,结合Lucene 5的优秀搜索性能和Zoie的实时索引能力,我们可以构建出一个既能处理大规模数据,又能实现实时更新的搜索引擎。这种技术方案对于那些对数据时效性要求高的企业而言,无疑是一种理想的解决方案。...
本文将详细介绍如何使用Lucene.NET对数据库进行索引创建以及实现高效的搜索功能。 首先,我们需要了解Lucene.NET的基本概念。Lucene是一个开源的Java项目,而Lucene.NET是它的.NET版本,它提供了对文本进行索引和...
在本文中,我们将探讨如何使用...在实践中,不断学习和交流,结合具体需求调整方法,才能更好地利用Lucene实现高效、准确的全文搜索功能。如果有任何问题或需要进一步讨论,可以通过邮件766003546@qq.com与作者交流。
标题中的“Lucene对本地文件多目录创建索引”指的是使用Apache Lucene库来构建一个搜索引擎,该搜索引擎能够索引本地计算机上的多个文件目录。Lucene是一个强大的全文搜索库,它允许开发者在Java应用程序中实现高级...
本教程主要探讨的是如何利用Lucene进行索引优化,特别是通过多线程和处理多个目录来提高索引创建效率。 首先,我们需要理解Lucene的索引原理。Lucene将文档分解为词项(tokens),并对每个词项创建倒排索引。倒排...