默认情况下,IndexSearcher类的search方法返回查询结果时,是按文档的分值排序的,可以使用重载的search方法对结果排序
IndexSearcher.search(Query,Sort);
new Sort() 和 Sort.RELEVANCE,以及null一样,采用默认排序,要定义排序字段,方法是将字段传入Sort对象
Sort sort = new Sort(String field);
也可以对多个字段排序Sort sort = new Sort(String[] fields);
例:
Sort sort = new Sort(new SortField[]{new SortField(“title”),new SortField(“name”)});
Hits hits=searcher.search(query,Sort);
多字段查找MultiFieldQueryParser
只在某些Term中查找,不关心在哪个字段
Query query = new MultiFieldQueryParser.parse(“word”,new String[]{“title”,”content”},analyzer); //在title和content中找word
多字段时默认是OR关系,要改变它,使用以下方法:
Query query = MultiFieldQueryParser.parse(“word”,new String[]{“title”,”content”},new int[]{MultiFieldQueryParser.REQUIRED_FIELD,MultiFieldQueryParser.PROHIBITED_FIELD},analyzer);
其中:
REQUIRED_FIELD 表示该条件必须有
PROHIBITED_FIELD 表示必须不含
搜索多个索引文件MultiSearcher
1) 建立多个索引:使用不同的索引目录,实例化不同的IndexWriter
2) 建立多索引搜索器:
Searcher[] searchers = new SEARCHER[2];
Searchers[0] = new IndexSearcher(dir1); //搜索索引目录一
Searchers[1]= new IndexSearcher(dir2);//搜索索引目录二
Searcher searcher = new MultiSearcher(serarchers);
3) 开始查询:Hits hits = searcher.search(query);
转自http://hi.baidu.com/litertiger/blog/item/1de7d758dc897080800a18f8.html
分享到:
相关推荐
- 尽量减少排序字段的类型和数量,因为每增加一个排序字段都会增加索引和查询的复杂性。 - 使用倒排索引(inverted index)来加速字段值的查找,特别是对于大数据量的场景。 - 在索引构建阶段,预处理排序字段,如将...
- Lucene支持多种排序策略,如按照评分评分(Score排序),按照文档ID排序,或者根据自定义字段排序。 - 在查询时,通过设置Sort对象指定排序依据和顺序。 5. 高亮显示: - Lucene提供Highlighter类来高亮搜索结果...
7. **多字段搜索**:Lucene允许在多个字段上同时进行搜索,可以通过FieldSelector选择参与搜索的字段。 8. **扩展性**:Lucene可以与其他技术结合,如Solr和Elasticsearch,提供更高级的企业级搜索解决方案。 9. *...
9. **多字段搜索**:Lucene支持在多个字段上同时进行搜索,例如可以在标题、内容等多个字段中查找关键词。 10. **实时搜索**:Lucene允许动态添加、删除和更新文档,实现近实时的搜索体验。 11. **扩展性**:...
用户输入搜索关键词后,Lucene会快速找出所有相关文章,并按照相关性排序返回给用户。 总之,Lucene提供了一套完整的文本检索解决方案,让开发者能够专注于业务逻辑,而无需关心底层搜索技术的复杂性。通过深入理解...
Lucene的核心目标是让开发者能够快速地在应用中集成高级的搜索功能,使得用户可以轻松地查找和定位所需的信息。 Lucene的特性包括: 1. **高性能**:Lucene采用了高效的索引和搜索算法,能够在海量数据中迅速找到...
3. 文档字段(Document Fields):每个文档由多个字段组成,每个字段有自己的特性,如是否可搜索、是否存储原始数据等。 4. 建立索引(Indexing):将分析后的词项与文档关联,形成倒排索引。 三、查询与搜索 1. ...
4. 结果排序:Lucene会根据相关性对查询结果进行排序,相关性通常是基于查询关键词在文档中的出现频率和位置来计算的。 三、Lucene的主要特性 1. 高效性:由于使用了倒排索引,Lucene能够快速地进行全文搜索,即使...
排序功能在信息检索中至关重要,Lucene 4.7.2提供了基于文档评分和自定义字段的排序。评分通常基于TF-IDF算法,而字段排序则允许用户根据特定字段的值进行升序或降序排列。 高亮显示则是为了提高用户体验,它可以在...
本文将围绕“lucene索引查看程序及代码”这一主题,详细探讨其工作原理、主要功能以及使用方法。 首先,我们要了解什么是Lucene索引。Lucene的索引是一种倒排索引,它通过分析文档内容,将每个单词映射到包含该单词...
文档由多个字段(Field)组成,每个字段有其特定的属性,如是否可搜索、是否可存储等。 3. **倒排索引**:Lucene 使用倒排索引来实现快速搜索。每个词项(Term)都有一个对应的倒排列表,记录了包含该词的所有文档...
Lucene使用查询对象在索引中查找匹配的文档,返回一个排序好的结果集。 3. **评分(Scoring)**: Lucene使用TF-IDF(Term Frequency-Inverse Document Frequency)算法对匹配文档进行评分,得分越高,相关性越强。 ...
- 多字段搜索:支持对多个字段进行同时搜索,比如搜索标题和内容。 - 布尔查询:允许用户使用AND、OR、NOT等逻辑运算符组合多个查询条件。 - 断词查询:支持模糊匹配和通配符查询,提高查询灵活性。 - 排序与评分:...
《Lucene原理与代码分析》深入探讨了几乎最新版本的Lucene的工作机制和代码实现细节,为理解全文搜索引擎的核心技术提供了宝贵的资源。以下是对该文件关键知识点的详细解析: ### 全文检索的基本原理 #### 总论 ...
Lucene的核心思想是将文本数据转换为结构化的索引,以便于快速查找相关文档。这个过程分为两个主要步骤:索引和查询。 **1. 索引过程** 在索引阶段,Lucene会分析文档内容,将其分解为小的单元——词项(Term)。...
1. **多字段搜索**:Lucene支持对多个字段进行同时搜索,通过BooleanQuery或者DisjunctionMaxQuery实现。 2. **模糊搜索**:通过使用PrefixQuery、WildcardQuery或FuzzyQuery,可以实现模糊匹配和通配符查询。 3. ...
2. **文档(Document)**:在Lucene中,文档是存储和检索的基本单位,它可以包含多个字段(Field),如标题、内容、作者等。 3. **字段(Field)**:每个文档由多个字段组成,每个字段有其特定的属性,如是否可搜索...
4. 结果排序:Lucene提供了多种评分算法,如TF-IDF,用于衡量文档与查询的相关性,从而对搜索结果进行排序。 5. 获取结果:Searcher返回的TopDocs对象包含了匹配的文档及其得分,可以进一步获取Document详情。 三...
7. **评分(Scoring)**:Lucene根据文档与查询的相关性给出评分,用于排序搜索结果。TF-IDF(Term Frequency-Inverse Document Frequency)是常用的评分算法。 8. **更新与删除(Update & Delete)**:一旦索引...
2. **查询处理**:Lucene支持多种查询语法,包括布尔查询、短语查询、模糊查询等,用户可以通过构造查询字符串来查找相关信息。 3. **文档检索**:根据查询结果,Lucene能够快速返回与查询相关的文档列表,同时提供...