Lucene是可以做到的,利用lucene的Filter,具体可以查看lucene的api中的org.apache.lucene.search.CachingWrapperFilter,它可以缓存上次的搜索结果,从而实现在结果中的搜索。
测试实例:
package com.wsjava;
import java.io.IOException;
import org.apache.lucene.analysis.SimpleAnalyzer;
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.CachingWrapperFilter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryFilter;
public class IndexTest {
/**
* @param args
* @throws ParseException
* @throws IOException
*/
public static void main(String[] args) throws IOException, ParseException {
index();
search("day"); //简单搜索
searchInResult("day", "you"); //在结果集中搜索
}
public static void index() throws IOException {
IndexWriter writer = new IndexWriter("d:/tesindex",new SimpleAnalyzer(), true);
writer.setMaxMergeDocs(1000);
writer.setMergeFactor(100);
for (int i = 0; i < 10; i++) {
Document doc = new Document();
String content = "How do you do?";
if (i >= 5) {
content = "What's a good day. ";
}
if (i >= 7) {
content = "Nice day. Thanks you!";
}
doc.add(new Field("content", content, Field.Store.YES,Field.Index.TOKENIZED));
writer.addDocument(doc);
}
}
//简单实现对qw的搜索.
public static void search(String qw) throws IOException, ParseException {
QueryParser queryParser = new QueryParser("content",new SimpleAnalyzer());
Query query = queryParser.parse(qw.trim());
QueryFilter filter = new QueryFilter(query);
search(query, filter);
}
//在搜索oldqw的结果集中搜索qw.
public static void searchInResult(String qw, String oldqw) throws ParseException, IOException {
QueryParser queryParser = new QueryParser("content",new SimpleAnalyzer());
Query query = queryParser.parse(qw.trim());
Query oldQuery = queryParser.parse(oldqw.trim());
QueryFilter oldFilter = new QueryFilter(oldQuery);
CachingWrapperFilter filter = new CachingWrapperFilter(oldFilter);
search(query, filter);
}
private static void search(Query query, Filter filter) throws IOException, ParseException {
IndexSearcher ins = new IndexSearcher("d:/tesindex");
Hits hits = ins.search(query, filter);
for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
System.out.println(doc.get("content"));
}
System.out.println();
}
}
分享到:
相关推荐
lucene实现文件检索Demo,
在Android平台上实现全文检索并高亮关键字是一项技术挑战,但通过集成Apache Lucene库,可以有效地...在实现过程中,需要注意资源管理、性能优化以及错误处理,确保在有限的Android环境中实现高效、稳定的全文检索。
总的来说,Lucene.Net 在 .Net MVC4 上实现全文检索是一个涉及数据库交互、索引构建、查询处理和结果展示的综合过程。通过熟练掌握 Lucene.Net 的使用,可以为用户提供高效、准确的全文搜索体验。
《中文分词及其在基于Lucene的全文检索中的应用》这篇论文主要探讨了中文分词在全文检索系统,特别是基于Lucene平台的应用。全文检索技术是现代信息检索领域的重要组成部分,而Lucene作为一款开源的全文检索引擎框架...
它提供了一个简单但功能强大的API,可以帮助开发者快速地在大量文档中实现高效的全文检索功能。在这个基于Struts2的全文检索系统中,Lucene扮演了核心的角色,负责文本的索引和查询。 **Struts2框架** Struts2是一...
利用Lucene接口编写简单的信息检索系统,实现对本地目录建立索引和搜索功能。代码包含两个JSP页面,放入tomcat的webapp目录中即可在浏览器中运行程序。选择文档路径时如若涉及浏览器权限问题,可直接输入。
在这个使用案例中,我们将深入探讨如何利用Lucene实现对Word文档中的关键字检索并高亮显示结果。 首先,我们需要理解Lucene的基本工作原理。Lucene通过建立倒排索引(Inverted Index)来加速查询。倒排索引是一种...
通过将数据库记录映射为 Lucene 的 Document,可以在不离开数据库环境的情况下实现全文检索。例如,可以使用 JDBC 连接数据库,读取记录并转换为 Document,然后进行索引。 ### 4. 实例应用 在实际项目中,我们...
### Lucene检索数据库支持中文检索 #### 一、Lucene简介与原理 ##### 1. Lucene概述 Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成。其核心功能是为开发者提供构建搜索应用程序的基础框架。Lucene...
Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询解析和结果排序等。它的设计...
Lucene实现全文检索功能
在实现企业产品检索时,我们需要先将产品信息转换为Lucene可处理的索引格式。这包括创建`IndexWriter`对象,设置合适的分词器(如庖丁解牛),然后逐条读取产品信息,使用`Document`对象存储每条产品的字段(如产品...
在实现这个简单实例的过程中,首先需要集成Paoding和Lucene到你的项目中。安装完成后,你需要创建一个索引器,使用Paoding对输入的文本进行分词,然后用Lucene的API将这些词构建为索引。索引过程通常包括打开读写器...
在Java开发中,Lucene被广泛用于实现文件的全文检索功能,包括对doc、docx、pdf、txt等常见格式文档的文本内容检索。在本文中,我们将探讨如何使用Lucene对这些文件类型进行全文检索的实现。 首先,为了实现全文...
在给定的压缩包中,`src` 文件夹可能包含了Lucene的Java源代码示例,`WebRoot` 可能是Web应用程序的根目录,这表明示例可能是如何在Web环境下集成Lucene进行全文检索的。`.classpath`、`.project` 和 `.settings` ...
下面我们将深入探讨如何在Android环境中利用Lucene来创建一个高效、功能丰富的全文检索系统,并了解如何高亮显示搜索结果中的关键字。 首先,我们要理解全文检索的基本原理。全文检索是指通过建立倒排索引来快速...
基于Jakarta Lucene的全文检索系统模型为非结构化数据提供了高效、灵活的检索手段,相比传统的数据库检索技术和Google的站内检索技术,它在关键字拆分、信息检索速度以及结果排序等方面展现出了显著优势。...