1.索引目录的提取方案:这里既可以每个单独使用,也可以嵌套使用 //这里采用了一些优化措施:先从外存中取出索引,然后存到内存中
Directory fsdirectory = FSDirectory.getDirectory(path);//把索引库放到外存中使用
RAMDirectory directory= new RAMDirectory(fsdirectory);//把索引库放到内存中使用
IndexSearcher indexSearcher = new IndexSearcher(directory);
2.高亮器的使用:
1.定义高亮器
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>", "</font>");
Scorer scorer = new QueryScorer(query);
Highlighter highlighter = new Highlighter(formatter, scorer);
// 默认值100既把在取出来前面多少个词中取关键词
Fragmenter fragmenter = new SimpleFragmenter(50);
highlighter.setTextFragmenter(fragmenter);
2.使用高亮器:
//在这里使用高亮
String text = highlighter.getBestFragment(analyzer,"content",document.get("content"));
if(text!=null){
//修改传过去的内容
document.getField("content").setValue(text);
}//注意要在转换之前使用高亮器,不让起不到高亮的作用了
Article article = ArticleDocumentUtils
.Document2Article(document);
list.add(article);
3.排序查询的使用:(默认的情况,根据相关度排序)
1).相关度排序:在建立索引的时候,
①.在Field上做文章:
f.setBoost(2F); // 默认值为1F,在存入索引库的时候,就给他个评分参数
②.在Document上做文章:
doc.setBoost(2F);//默认值为1F,
2).制定字段排序
①.
Sort sort = new Sort(new SortField("id", true));
// 生成排序器,为true表示降序,为false表示升序
②.
TopDocs topDocs = indexSearcher.search(query, null, 100, sort);
//指定排序器,使用
4.Query 查询
1).词查询(Term
):Query query = new TermQuery(new Term("content", "相关度"));
2).范围查询(Rangle):根据词的范围
Term lowerTerm = new Term("id", NumberTools.longToString(3));
Term upperTerm = new Term("id", NumberTools.longToString(10));
// Query query = new RangeQuery(lowerTerm,upperTerm, true);
// 不包含边界,相应的queryString为:id:{00000000000003 TO 0000000000000a}
Query query = new RangeQuery(lowerTerm, upperTerm, false);
3).通配符查询(Wildcard)// ? 代表一个字符// * 代表0个或多个字符:
Query query = new WildcardQuery(new Term("content", "相关*"));
4).布尔查询:这是词查询的组合
布尔查询的时候主要是要在两个关键词进行逻辑运算;
首先建立两个词:
Query query1 = new TermQuery(new Term("content", "检索"));
Query query2 = new TermQuery(new Term("content", "相关度"));
然后逻辑运算:
BooleanQuery booleanQuery = new BooleanQuery();
分享到:
相关推荐
在提供的"lucene5.2.1入门经典案例"中,你可以找到如何创建索引、执行查询、高亮显示结果等具体操作的示例代码。这些案例可以帮助初学者快速理解和应用Lucene-5.2.1的核心功能。通过实践,你可以更深入地了解Lucene...
6. **扩展性和定制化**:Lucene 是一个高度模块化的框架,允许开发者根据需求自定义分词器、查询解析器、评分函数等。此外,还可以通过插件机制添加新的功能或优化现有行为。 在压缩包中的"lucene-5.0.0"文件夹下,...
3. **Highlighter模块**:`lucene-highlighter-2.4.0.jar` 提供了高亮显示查询匹配部分的功能,这在用户界面中展示搜索结果时非常有用,可以突出显示与查询相关的关键词。 4. **示例和文档**:除了库文件外,这个...
《深入理解Lucene 4.7.0:Java全文索引与高亮显示技术》 Lucene是一个由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。在4.7.0这个版本中,Lucene不仅强化了其核心搜索功能,还...
- **分词器(Analyzer)**:Lucene提供多种分词器,如标准分词器、中文分词器等,用于将输入文本分解成关键词。 2. **Lucene的主要组件** - **索引(Indexing)**:将原始数据转换为可搜索的索引,包括文档的添加...
1. **Lucene的基本概念**:包括倒排索引、分词器(Analyzer)、文档(Document)、字段(Field)、索引(Index)、查询(Query)等基本元素。倒排索引是Lucene的核心,它允许快速定位到包含特定词项的文档。 2. **...
《Apache Lucene 6.6.0:全文检索与索引库详解》 Apache Lucene 是一个开源的全文检索库,由Java编写,为开发者提供了强大的文本搜索功能。6.6.0 版本作为官方的最新完整版,集成了众多优化和改进,旨在提供更加...
同时,Sort类则支持对结果进行定制化的排序,包括基于评分、字段值或自定义比较器的排序。 4. **高亮显示**: Lucene 提供了Highlighter组件,可以在搜索结果中高亮显示匹配的关键词,提升用户体验。4.6.1版文档会...
LUKE(Lucene Index Browser Utility Kit)是一个强大的Lucene索引浏览器和分析工具,它可以帮助开发者查看、分析、调试Lucene索引。"lukeall-3.5.0.jar"则是包含LUKE工具的完整版本,适用于Lucene 3.5.0。通过LUKE...
Lucene 5.2.1 版本在性能方面做了许多改进,包括更快的索引构建、更高效的查询执行以及内存管理的优化。此外,该版本还支持多线程索引和查询,提升了并发性能。 通过深入研究`lucene-5.2.1-src.tgz`中的源代码,...
使用Lucene进行分词时,你需要选择合适的分析器,如对于中文,可以使用`ChineseAnalyzer`,然后创建索引并执行查询。分词是全文搜索的关键步骤,因为搜索引擎是通过分析和索引文档中的单词来进行匹配的。通过合理的...
总之,Lucene 6.4.0作为一个全文检索开发工具,不仅提供了强大的搜索功能,还在索引、查询、多语言支持等多个方面进行了优化,使得在处理大规模数据时更加高效和可靠。无论是开发搜索引擎、文档管理系统还是其他需要...
7. **内存和磁盘管理**:Lucene利用RAMDirectory和MMapDirectory等不同的目录实现来存储索引,平衡内存效率和磁盘空间使用。NIOFSDirectory利用Java NIO进行文件访问,提高性能。 8. **分布式搜索**:通过Solr或...
在Lucene 4.4.0中,Highlighter已经相当成熟,但仍然存在一些优化空间,比如提高高亮速度,支持更多复杂的查询类型,以及更好地处理多语言文本等。此外,开发者还可以通过自定义组件来扩展其功能,以适应特定的应用...
4. 分析器(Analyzer):Lucene提供了一种机制来处理输入文本,包括分词、去除停用词、词形还原等,以便于建立索引和进行搜索。 5. 查询解析器(QueryParser):将用户输入的查询字符串转换为内部表示,支持布尔...
`lucene-queries.jar`和`lucene-queryparser.jar`则分别提供了查询表达式的支持和查询解析器。它们使得开发者可以构建复杂的布尔查询、范围查询、模糊查询等,并将用户的自然语言查询转化为Lucene能够理解的内部表示...
Lucene的核心功能包括文档的索引、搜索、排序和高亮显示等。在这个2.9.4版本中,开发者可以利用其强大的文本分析能力,对输入的文本进行分词、去除停用词、词形还原等一系列预处理操作,为后续的搜索提供高效的数据...
段合并是Lucene索引维护的重要部分,涉及`MergePolicy`和`MergeScheduler`两个关键组件。 9. **文档字段与存储** `Document`类是Lucene的基本数据结构,包含多个`Field`。`Field`有三种类型:存储(Stored)、索引...
`contrib`目录包含了社区开发的附加组件,如 SpellChecker(拼写检查)、Highlighter(高亮显示) 和 Ant任务等,它们丰富了Lucene的功能,满足更多应用场景。 通过对`lucene-3.3.0-src.zip`源码的深入学习,...
Apache Lucene是一个开源的Java库,它提供了文本分析、索引创建、查询解析和结果排序等功能。作为搜索引擎的基础框架,Lucene为开发者提供了一套强大的工具,使得构建高效、灵活的搜索解决方案成为可能。版本2.9.4是...