使用2.4版本查询并高亮显示
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.TermPositionVector;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocCollector;
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.search.highlight.TokenSources;
public class NewSearch
{
public static void main(String[] args) throws Exception
{
String indexDir = "index";
String queryString = "oracle";
IndexSearcher isearcher = new IndexSearcher(indexDir);
BooleanClause.Occur[] clauses = {BooleanClause.Occur.SHOULD, BooleanClause.Occur.SHOULD};
TopDocCollector collector = new TopDocCollector(10); // 启用这个
Query query = MultiFieldQueryParser.parse(queryString, new String[]{"path", "body"}, clauses,
new StandardAnalyzer());
isearcher.search(query, collector); // 作为参数
ScoreDoc[] hits = collector.topDocs().scoreDocs; // 拿到结果
int docId;
SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<strong><font color='red'>", "</font></strong>");
SimpleFragmenter fragmenter = new SimpleFragmenter(60);
Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query));
highlighter.setTextFragmenter(fragmenter);
int maxNumFragmentsRequired = 10;
String fragmentSeparator = "";
TermPositionVector tpv = null;
TokenStream tokenstream = null;
for (int i = 0; i < hits.length; i++)
{
// 循环
docId = hits[i].doc; // 一个内部编号
Document doc = isearcher.doc(docId); // 通过编号,拿到文档
System.out.println("所在文件路径:"+doc.get("path"));
tpv = (TermPositionVector) isearcher.getIndexReader().getTermFreqVector(docId, "body");
tokenstream = TokenSources.getTokenStream(tpv);
String result = highlighter.getBestFragments(tokenstream, doc.get("body"),maxNumFragmentsRequired, fragmentSeparator);
System.out.println("内容"+result);
}
}
}
Lucene 2.4里一些过期方法的解决方案
http://extjs2.iteye.com/blog/268014
分享到:
相关推荐
- **搜索结果高亮**: 为了提高用户阅读体验,Lucene 高亮包提供了搜索关键词在文档中的高亮显示功能,使用户能快速识别出匹配的关键词。 - **自定义样式**: 开发者可以自定义高亮的样式,如使用不同的颜色或者背景...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part3 SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎--NewsWithSearch.part2 SSH + Lucene + 分页 + 排序 + 高亮 ...
Lucene提供了高效的文本分析、索引和搜索功能,是许多大型网站和应用的基础。本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene...
在Lucene 2.4.0中,这个过程通过`IndexWriter`类实现,它负责建立和更新索引,同时支持分段索引,提高了性能和可扩展性。 接着,索引的存储和检索是由`Directory`接口和它的实现类完成的。例如,`FSDirectory`用于...
**SpringBoot+Lucene搜索结果高亮显示** 在现代Web应用程序中,强大的全文搜索引擎功能是不可或缺的,而Apache Lucene正是这样一个高效的、可扩展的开源全文检索库。在这个SpringBoot+Lucene的Demo中,我们将深入...
- **改进的性能**:在 2.4.0 版本中,Lucene 对搜索速度和内存使用进行了优化,提供了更快的索引和搜索体验。 - **增强的稳定性**:修复了前一版本中的许多错误,提高了整体的系统稳定性和可靠性。 - **扩展性**:...
3. **lucene-highlighter-2.4.0.jar**:高亮模块是Lucene中用于突出显示搜索结果中与查询匹配的部分。在搜索结果展示时,高亮可以显著提升用户体验,让用户快速定位到关键词。在2.4.0版本中,高亮器支持多种格式的...
综上所述,这个项目展示了如何利用SSH框架与Lucene搜索引擎技术,实现一个功能完备的新闻搜索系统,包括高效搜索、结果排序、分页展示以及关键词高亮等特性。这样的系统对于提升新闻网站的用户体验具有重要意义。
本篇文章将深入探讨如何利用Apache Lucene这个强大的全文搜索引擎库,结合Highlighter组件实现搜索结果的高亮显示。 Apache Lucene是一个高性能、可扩展的开源全文检索库,它提供了完整的索引和搜索功能,使得...
4. 排序与评分(Scoring):Lucene使用TF-IDF算法对搜索结果进行评分,高分表示文档与查询的相关性更高。 三、Lucene 2.4.0特性 1. 基于Java的API:Lucene 2.4.0完全使用Java编写,跨平台兼容,易于集成到Java项目...
java(结合lucene)版的公交搜索系统(javaWeb+lucene+jsp+tomcat+eclipse/idea) java(结合lucene)版的公交搜索系统(javaWeb+lucene+jsp+tomcat+eclipse/idea) java(结合lucene)版的公交搜索系统(javaWeb+lucene+...
- **查询执行**:索引建立后,通过QueryParser构建查询,使用Searcher执行查询并获取结果集。 - **结果排序**:Lucene提供了多种排序策略,如按相关性(TF-IDF)或自定义评分函数排序。 - **缓存机制**:为了提高...
lucene-highlighter-2.4.0.jar lucene highlighter
3. **Highlighter模块**:`lucene-highlighter-2.4.0.jar` 提供了高亮显示查询匹配部分的功能,这在用户界面中展示搜索结果时非常有用,可以突出显示与查询相关的关键词。 4. **示例和文档**:除了库文件外,这个...
总之,通过深入学习Lucene 2.4.0的源码,我们可以了解到搜索引擎背后的基本原理,理解其索引构建、查询执行、结果排序等核心过程,为开发高效、定制化的搜索应用打下坚实基础。对于研究搜索引擎技术的开发者而言,这...