http://callan.iteye.com/blog/155611
Lucene增加高亮显示后结果更高明显了,但是返回结果的速度比较慢.原因是Lucene做每一篇文档的相关关键词的高亮显示时,在运行时执行了很多遍的分词操作,降低了性能.
TermVector保存Token.getPositionIncrement() 和Token.startOffset() 以及Token.endOffset() 信息。利用Lucene中新增加的Token信息的保存结果以后,就不需要为了高亮显示而在运行时解析每篇文档。通过Field方法控制是否保存该信息
public void searcher() throws IOException{
IndexReader reader = IndexReader.open(directory);
IndexSearcher searcher = new IndexSearcher(directory);
TermQuery query = new TermQuery(new Term("subject","java"));
Hits hits = searcher.search(query);
//高亮显示设置
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<font color='red'>","</font>");
Highlighter highlighter =new Highlighter(simpleHTMLFormatter,new QueryScorer(query));
// 这个100是指定关键字字符串的context的长度,你可以自己设定,因为不可能返回整篇正文内容
highlighter.setTextFragmenter(new SimpleFragmenter(100));
for(int i = 0; i < hits.length(); i++){
Document doc = hits.doc(i);
TermPositionVector termFreqVector = (TermPositionVector)reader.getTermFreqVector(hits.id(i), "subject");
TokenStream tokenStream = TokenSources.getTokenStream(termFreqVector);
String result = highlighter.getBestFragment(tokenStream, doc.get("subject"));
System.out.println(doc.get("title"));
System.out.println(result);
}
}
搜索结果:
java
<font color='red'>java</font>一门编程语言
分享到:
相关推荐
7. **性能优化**:Lucene采用了内存映射文件和位向量等技术,实现了高效的磁盘I/O和内存使用,确保了搜索速度。 在.NET环境中使用Lucene.Net.dll,开发者需要了解以下几点: - **安装与引用**:将Lucene.Net.dll...
Lucene最初由Doug Cutting创建,它是一个高性能、全文本搜索的Java库,为开发者提供了构建搜索引擎所需的各种组件,如索引、查询解析、排序和高亮显示等。Lucene 2.9.4是其历史上的一个重要版本,具有稳定性和兼容...
此外,书中还探讨了Lucene的Perl、Python、C#、.Net和C++的移植版本,并介绍了排序、过滤、项向量特性以及对多索引和远程索引的搜索操作。针对新引入的SpanQuery特性、扩展的查询解析器以及命中结果集等功能也进行了...
Lucene的核心功能包括文档的索引、搜索、排序和高亮显示等。在这个2.9.4版本中,开发者可以利用其强大的文本分析能力,对输入的文本进行分词、去除停用词、词形还原等一系列预处理操作,为后续的搜索提供高效的数据...
对于高亮显示结果时丢失标点的问题,可以通过选择合适的分析器,如IK分词器,来解决。最后,搜索结果的显示数量可以通过TopScoreDocCollector来控制,定义要返回的文档数,并通过score方法收集相关文档。 总之,...
6. **Term Vector查看**:Luke可以显示文档的词项向量(Term Vectors),这包含每个词项的位置、频率和偏移量信息,对于理解TF-IDF算法和其他相关性计算很有价值。 7. **倒排索引查看**:Luke允许用户查看倒排索引...
8. **内存优化**:Lucene通过缓存技术提高了搜索速度,比如字段值缓存和位向量缓存,减少磁盘I/O操作。 Web环境下的Lucene应用可能涉及以下方面: 1. **Web应用程序集成**:将Lucene与Java Servlets、Spring、...
它支持包括索引创建、维护、搜索以及高亮显示等功能,并且具有良好的扩展性和性能。 Lucene的总体架构设计允许它在多个方面进行优化和定制,以适应不同的应用场景。例如,它能够支持索引的分布式管理、不同语言的...
1. **Lucene基础**:Lucene是一个基于Java的文本搜索库,提供了完整的全文检索功能,包括索引、搜索、高亮显示结果等。它通过分词、建立倒排索引等步骤,实现高效的数据检索。 2. **索引过程**:在Lucene中,首先...
### Lucene+Solor知识点概述 #### 一、搜索引擎基础理论 **1.1 Google神话** - **起源与发展:** - Google成立于1998年,由Larry Page...- 本章详细介绍了如何使用Lucene创建和管理索引库,包括索引库的设计、创建...
20. Elasticsearch 高亮之词项向量 Elasticsearch 提供了高亮功能,可以对搜索结果进行高亮显示。 21. Elasticsearch 高亮之 Highlight 原理 Elasticsearch 提供了高亮原理,可以对搜索结果进行高亮显示。 22. ...
5. **优化与性能**: 为了提高搜索效率,开发者还需要关注缓存策略、多线程处理、内存管理等方面。例如,Lucene提供了一些优化选项,如字段缓存、位向量缓存等,可以帮助加快搜索速度。 6. **扩展性与可配置性**: ...
Solr,作为Apache Lucene项目的一部分,是一款强大的开源搜索引擎服务器,它提供了丰富的功能,包括全文检索、高亮显示、拼写检查、分类、 faceting、实时添加文档等。Solr的灵活性和可扩展性得益于其插件系统,使得...