lucene3.0.0 高亮显示实例
package com.tx.test;
import java.io.File;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
public class TestHighlightDemo {
private File file = new File("f:" + File.separator + "indexDir5");
private Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
private Directory directory;
private IndexWriter writer;
private IndexSearcher searcher;
//创建索引
@Test
public void createIndex() throws Exception {
writer = new IndexWriter(new SimpleFSDirectory(file), analyzer, true,
MaxFieldLength.LIMITED);
Document docA = new Document();
String fileTextA = "火烧云总是燃烧着消失在因为太阳冲下地平线的时刻,然后便是宁静的自然的天籁," +
"没有谁会在这样的时光的镜片里伤感自语,因为灿烂给人以安静的舒适感";
Field fieldA = new Field("contents", fileTextA, Store.YES, Index.ANALYZED);
docA.add(fieldA);
Document docB = new Document();
String fileTextB = "带有以因为伤痕为代价的美丽风景总是让人不由地惴惴不安," +
"紧接着袭面而来的抑或是病痛因为抑或是灾难,没有谁会能够安逸着恬然,因为模糊让人撕心裂肺地想呐喊";
Field fieldB = new Field("contents", fileTextB, Store.YES, Index.ANALYZED);
docB.add(fieldB);
Document docC = new Document();
String fileTextC = "因为我喜欢上了一个人孤独因为地行游,在梦与海洋的交接地带炽烈燃烧着。"+
"双方都,因为一条孤独的鱼喜欢上了火焰的颜色,真是荒唐地不合逻辑";
Field fieldC = new Field("contents", fileTextC, Store.YES, Index.ANALYZED);
docB.add(fieldC);
writer.addDocument(docA);
writer.addDocument(docB);
writer.addDocument(docC);
writer.close();
}
//查詢
@Test
public void search(String fieldName,String keyword) throws Exception{
searcher = new IndexSearcher(new SimpleFSDirectory(file));
//创建查询解析器
QueryParser parser = new QueryParser(Version.LUCENE_30, "contents", analyzer);
Query query = parser.parse(keyword);
TopDocs tDocs = searcher.search(query, 100);
System.out.println("你要搜索的内容:"+keyword);
//tDocs.totalHits表示一共搜索了多少
System.out.println("一共找到了 " +tDocs.totalHits+"个结果");
System.out.println();
for (int i = 0; i < tDocs.scoreDocs.length; i++) {
ScoreDoc sDoc = tDocs.scoreDocs[i];
System.out.println("内容索引编号:"+sDoc.doc);
System.out.println("相似度得分:"+sDoc.score);
Document document = searcher.doc(sDoc.doc);
String text = document.get(fieldName);
System.out.println("内容是:"+document.get(fieldName));
//高亮定义
SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<font color='red'>", "</font>");
Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query));
highlighter.setTextFragmenter(new SimpleFragmenter(text.length()));
if (text != null) {
TokenStream tokenStream = analyzer.tokenStream(fieldName, new StringReader(text));
//高亮显示的内容
String highLightText = highlighter.getBestFragment(tokenStream,text);
System.out.println("高亮显示第"+(i+1)+"条检索结果如下:");
System.out.println(highLightText);
System.out.println();
}
}
searcher.close();
}
public static void main(String[] args) throws Exception{
TestHighlightDemo thd = new TestHighlightDemo();
//创建索引
thd.createIndex();
//查询 高亮显示
thd.search("contents","因为");
}
}
分享到:
相关推荐
《Apache Lucene 3.0.0:全文检索与索引库详解》 Apache Lucene 是一个开源的全文检索库,由Java编写,为开发者提供了强大的文本搜索功能。作为一款高度可扩展的搜索引擎框架,Lucene 3.0.0 版本在当时代表着其最新...
The new version is mostly a cleanup release without any new features. All deprecations targeted to be removed in version 3.0 were removed.
《Lucene+HighLighter高亮显示实例解析》 在信息技术领域,搜索引擎的构建与优化是至关重要的一环,其中,如何有效地对搜索结果进行高亮显示,以突出关键信息,是提升用户体验的关键因素之一。本篇文章将深入探讨...
在这个"lucene3.0.0 入门DEMO"中,我们将探讨如何使用 Lucene 3.0.0 版本进行基本操作。 首先,让我们了解Lucene的核心概念: 1. **索引**:在Lucene中,索引是文档内容的预处理结果,类似于数据库中的索引,用于...
而 `lucene3.0.0` jar 包则是 Lucene 的一个重要版本,发布于2009年,它提供了丰富的文本分析、索引构建和搜索功能。此版本引入了一些新的特性,优化了性能,并修复了一些已知问题。 在 Lucene 3.0.0 中,主要包含...
lucene3.0.0的学习资料,里边有lucene的jar包,具体的入门讲解:http://blog.csdn.net/lengyuhong/archive/2010/11/17/6014597.aspx
标题与描述概述的知识点主要集中在Lucene的高亮显示功能,尤其是在处理中文分词时的性能优化策略。以下是对这些知识点的详细展开: ### Lucene的高亮显示 Lucene是一款高性能、全功能的文本搜索引擎库,其高亮显示...
### Lucene高亮显示详解 在全文搜索领域,Apache Lucene是业界标准的搜索引擎库,提供了强大的文本搜索功能。而在搜索结果中实现关键词高亮显示,可以极大地提升用户体验,让用户快速定位到搜索词所在的位置。本文...
最新的lucene api手册, 感觉看这个比一堆html方便。。。 支持开源
《Apache Lucene 3.0.0 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。在这个版本3.0.0的源码中,我们可以深入理解Lucene的核心机制和设计原理,这对于开发、优化以及...
**SpringBoot+Lucene搜索结果高亮显示** 在现代Web应用程序中,强大的全文搜索引擎功能是不可或缺的,而Apache Lucene正是这样一个高效的、可扩展的开源全文检索库。在这个SpringBoot+Lucene的Demo中,我们将深入...
《Java全文搜索引擎Lucene 3.0.0源码及库文件详解》 Java全文搜索引擎Lucene是一款开源的、高性能的文本分析和检索库,它为开发者提供了在Java应用程序中实现全文搜索功能的能力。本篇将深入探讨Lucene 3.0.0版本的...
本压缩包中的代码着重展示了如何使用 Lucene 进行分页搜索和结果高亮显示。下面将详细解释这两个关键知识点。 **一、Lucene 分页搜索** 在大型数据集上进行搜索时,一次性返回所有结果并不实际,因此分页搜索显得...
《深入剖析Lucene 3.0.0:Java搜索引擎的核心技术》 在Java开发领域,Lucene是一个不可或缺的全文搜索引擎库,它为开发者提供了强大的文本分析、索引和搜索功能。这里我们关注的是Lucene 3.0.0版本,它是Lucene历史...
lucene3.5高亮
在实际应用中,你可能需要结合这两者,即根据多字段查询获取结果,然后对结果显示高亮。这需要对Lucene的API有深入的理解,包括如何构建和执行查询,如何获取文档字段的原始文本,以及如何使用Highlighter。 在提供...
- **执行查询**:使用命令`java org.apache.lucene.demo.SearchFiles`,之后会提示输入查询关键字,按回车键后即可显示查询结果。 **2. Web 应用程序** - **部署 Lucene Web 应用**: - 将`lucene-core-3.0.0.jar...
标题中的“lucene.net以及高亮的DLL文件”指的是在.NET环境中使用Lucene搜索引擎库时,涉及到了文本高亮显示的DLL组件。Lucene.Net是一个开源的全文检索库,它是Apache Lucene项目针对.NET Framework的移植版本,为...
本文将详细介绍如何使用Java和Lucene来实现HTML文本的高亮显示,以便用户在搜索结果中能快速识别关键词。提供的`HighLighterUtils.java`文件应该包含了实现这一功能的核心代码。 首先,我们需要理解高亮显示的基本...