org.apache.lucene.search
Class Weight
java.lang.Object
org.apache.lucene.search.Weight
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
BooleanQuery.BooleanWeight, ConstantScoreQuery.ConstantWeight, DisjunctionMaxQuery.DisjunctionMaxWeight, SpanWeight
public abstract class Weight
extends Object
implements Serializable
Expert: Calculate query weights and build query scorers.
The purpose of Weight
is to ensure searching does not modify a Query
, so that a Query
instance can be reused.
Searcher
dependent state of the query should reside in the Weight
.
IndexReader
dependent state should reside in the Scorer
.
A Weight
is used in the following way:
- A
Weight
is constructed by a top-level query, given a Searcher
(Query.createWeight(Searcher)
).
- The
sumOfSquaredWeights()
method is called on the Weight
to compute the query normalization factor Similarity.queryNorm(float)
of the query clauses contained in the query.
- The query normalization factor is passed to
normalize(float)
. At this point the weighting is complete.
- A
Scorer
is constructed by scorer(IndexReader,boolean,boolean)
.
- 大小: 16.9 KB
分享到:
相关推荐
float sum = weight.sumOfSquaredWeights(); // 计算平方权重之和 float norm = getSimilarity(searcher).queryNorm(sum); // 获取规范化因子 weight.normalize(norm); // 规范化 Weight 对象 return weight; //...
- `org.apache.lucene.search`:包含了搜索相关的类,如ScoreDoc、TopDocs、Weight等,负责执行查询和评分。 - `org.apache.lucene.analysis`:包含了分析器的相关实现,如StandardAnalyzer、SimpleAnalyzer等,...
- `search(Weight weight, Filter filter, int n, Sort sort)`: 类似上一个方法,但使用Weight对象。 4. **代码示例**: - 创建IndexSearcher实例通常需要一个IndexReader,可以从目录中打开,如`DirectoryReader...
《深入理解Lucene 4.4与Elasticsearch:源码剖析与实战探索》 Lucene和Elasticsearch是两个在信息检索和大数据分析领域中不可或缺的重要工具。Lucene作为一个高性能、全文本搜索库,提供了丰富的索引和搜索功能;而...
Lucene的核心组件包括索引(Index)、查询解析器(Query Parser)、搜索(Search)和文档处理(Document)。源码中,我们可以看到这些模块的具体实现: 1. 索引:索引是Lucene实现高效搜索的关键。在`src/core/org/...
2. **搜索**:`src/Lucene.Net/Search`目录包含了搜索相关的类,如`IndexSearcher`用于执行查询,`Query`表示查询语句,`Weight`和`Scorer`负责评分和匹配文档。 3. **分析**:`src/Lucene.Net/Analysis`目录下,`...
4. 搜索(Search):使用Searcher执行查询,返回匹配的结果集。ScoreDoc表示每个匹配文档的评分,TopDocs则封装了匹配文档的总数和最高评分的文档。 5. 文档(Document):表示要索引的实体,由多个字段(Field)...
Lucene社区活跃,不断有新的改进和扩展,如Solr和Elasticsearch,它们基于Lucene提供更高级的服务,如分布式搜索、集群管理和数据分析。 总结,通过对“lucene-2.9.0-src.tar.gz”的研究,我们可以深入学习全文检索...
query就是查询参数,weight即对查询参数赋予权重,比如查询title包含"lucene"的文章,则首先对"lucene"这个term赋予权重 1.1 对"lucene"这个term赋予权重,需要先从索引文件中读取"title"这个字段的倒排表信息,即图中
在`org.apache.lucene.search`包下,`Similarity`类是评分的基础,提供了默认的TF-IDF实现。你可以根据需求自定义子类,覆盖其方法来改变评分行为。同时,`Weight`和`ScoreDoc`接口提供了关于查询和评分的具体实现...
根据权重对象`weight.scoresDocsOutOfOrder()`的结果,`TopScoreDocCollector`会决定创建`InOrderTopScoreDocCollector`还是`OutOfOrderTopScoreDocCollector`。前者假设文档得分按顺序排列,而后者则不作此假设,这...
Elasticsearch与Solr都是基于Lucene的全文搜索引擎,但Elasticsearch在分布式处理和实时性上更胜一筹。相对于MongoDB这样的NoSQL数据库,Elasticsearch更专注于搜索和分析功能,而在存储大量结构化数据方面,数据库...