测试环境里查询条件1065800714,为什么ScoreDoc.score小于1呢?这个值是怎么算出来的?
输入1065800714*,ScoreDoc.score变成了1
注:在生产环境里大于1而在测试环境里却小于1,生产和测试环境唯一区别是测试环境数据量很小。
ScoreDoc.score——The score of this document for the query.
判断文档之间的关系(即文档相关性)
注:查询语句也可以看成是文档,即查询语句与匹配结果文档之间的关系
要判断文档之间的关系,首先得找出哪些词(Term)对文档之间的关系最重要,然后判断这些词之间的关系
从而得到文档相关性。
step 1.计算词(Term)的权重(Term Weight)
一个词在某文档中的重要性(即权重)越大,则在计算文档之间相关性中作用更大,影响权重主要有两个要素:
a. Term Frequency(tf):此term在此document里出现的次数。出现次数越多,tf越大,说明该词越重要。
b. Document Frequency(df):多少document包含该term。数目越少,df越小(idf越大),说明该词越重要。
step 2.向量空间模型算法(Vector Space Model)计算文档之间的相关性。
fieldWeight是什么?
IndexSearcher中与打分有关的方法
我的需求:只关心查询的term是否存在,对于hit result的score,term的文档频率(df)不影响score。
即计算一个term的权重,根据该term占一个document的tf来计算,忽略上面step 1的b因素。
参考:
http://lucene.apache.org/core/old_versioned_docs/versions/3_4_0/scoring.html
http://lucene.apache.org/core/old_versioned_docs/versions/3_4_0/api/core/org/apache/lucene/search/package-summary.html#changingSimilarity
http://www.gossamer-threads.com/lists/lucene/java-user/39125#39125
http://www.gossamer-threads.com/lists/lucene/java-user/38967#38967
分享到:
相关推荐
然而,Lucene 的默认评分机制可能无法满足所有场景下的需求,这就需要我们对其进行自定义评分来实现特定的权重分配。本文将深入探讨如何在 Lucene 中实现自定义评分,以及它对提高搜索质量的重要性。 在 Lucene 中...
在深入探讨Lucene的评分机制之前,我们首先要理解搜索引擎的基本工作流程,这通常包括索引构建、查询解析和结果排序三个阶段。在Lucene中,评分机制(Scoring Mechanism)就是用于决定文档与查询匹配程度的关键部分...
《深入 Lucene 索引机制》这篇博文主要探讨了Lucene这个全文搜索引擎的核心索引原理,它在信息检索领域有着广泛的应用。Lucene是一个开源的Java库,它提供了高效、可扩展的文本搜索功能。以下是对Lucene索引机制的...
在Lucene 5版本中,对于搜索结果的排序和评分机制进行了优化,使得搜索体验更加精准。本文将深入探讨Lucene5中的评分(Scoring)机制,帮助读者理解如何通过源码分析和工具使用来提升搜索质量。 首先,我们需要了解...
同时,它还提供了评分机制,用于衡量查询结果的相关性。 4. **更新与删除** Lucene允许动态更新和删除文档,这在实时搜索场景中非常重要。更新文档时,Lucene会处理旧索引和新索引的合并;删除文档时,它会在索引...
Lucene 提供了索引和搜索文本的基本工具,包括分词、建立倒排索引、查询解析和评分机制等。 **安装与配置** 安装 Lucene 非常简单,只需要将对应的 JAR 包添加到项目依赖中。在 Maven 项目中,可以在 pom.xml 文件...
7. **近实时搜索(NRT)**:从3.0版本开始,Lucene引入了NRT机制,允许在不完全刷新索引的情况下返回最新结果。`IndexWriter.addDocument()`和`IndexWriter.commit()`等方法体现了这一特性。 8. **多字段搜索**:...
4. **结果排序**:Lucene通过评分机制(如TF-IDF)对搜索结果进行排序,得分最高的结果优先展示。 5. **过滤与聚合**:Filter和Collector组件可以用于进一步筛选结果,或者进行分组、统计等聚合操作。 6. **更新与...
4. **文档评分**:Luck 显示每个匹配文档的评分,这是 Lucene 排序算法的结果,展示了文档与查询的相关性。 5. **元数据查看**:用户可以查看索引的元数据,如文档总数、字段列表、分段信息等,这些信息对于分析...
4. **查询处理**:讲解了如何构建各种查询表达式,如布尔查询、短语查询、范围查询等,并且讨论了评分机制和查询优化技巧。 5. **高级主题**:书中涵盖了高级话题,如近实时搜索、分布式搜索(通过Solr实现)、复杂...
在理解Lucene的工作机制之前,我们需要了解全文检索的基本原理。 - **索引构建**:这是全文检索的第一步,涉及到将文档内容转换为可被快速搜索的形式。 - **查询处理**:当用户提交查询时,系统会根据已建立的索引...
- **结果排序**: Lucene 支持多种评分机制,如 TF-IDF,用于确定文档的相关性,从而对搜索结果进行排序。 - **结果返回**: 最后,返回给用户最相关的搜索结果。 ### 3. 文件和数据库支持 Lucene4 不仅能处理文本...
**Lucene 3.3.0 学习Demo** ...总之,"Lucene3.3.0学习Demo"是一个宝贵的资源,对于想要掌握全文搜索技术的开发者来说,它提供了丰富的实践案例和学习材料,可以帮助你快速上手并深入理解Lucene的核心机制。
4. **评分机制**:基于TF-IDF、BM25等算法,Lucene可以对匹配的文档进行评分,用于决定搜索结果的排序。 5. **过滤器(Filter)和截断器(Analyzer)**:用于进一步处理词元,如删除停用词、词干提取、大小写转换等...
- **内存索引**:2.9.4引入了更高效的内存索引构建机制,对于快速原型开发和测试场景非常有用。 2. **Lucene 3.0.2和3.0.3** - **段合并优化**:这两个版本主要关注于索引段的合并策略,旨在减少磁盘I/O,提高...
通过《Lucene实战(中文版第二版)》结合Lucene 3.0.3源代码,读者不仅可以掌握Lucene的基本用法,还能深入理解其内部机制,为开发高效、定制化的全文搜索引擎奠定基础。同时,由于Lucene各版本间的差异,学习历史...
2. **索引构建**:Lucene的索引机制是基于倒排索引的,这种索引方式允许快速查找包含特定词的文档。在构建索引时,开发者可以自定义字段,决定哪些内容需要被索引,哪些内容仅用于存储不参与搜索。 3. **查询解析**...
- Lucene的核心机制是倒排索引,它将每个词项映射到包含该词项的文档列表,极大地提高了搜索效率。 5. **优化与更新**: - `Optimize()`方法用于合并索引段,减少索引文件的数量,提高搜索性能。 - `Commit()`和...
Lucene是Apache软件基金会下的一个项目,它是一个高性能、全文本搜索库,完全用Java编写。作为一款开源的全文检索工具包,...通过学习和使用Lucene源码,你可以更深入地理解全文检索的工作机制,提升自己的开发技能。
5. **搜索执行**:如何使用IndexSearcher进行搜索,包括评分机制、TopDocs和ScoreDoc的使用,以及如何排序结果。 6. **优化与性能**:可能涉及到索引的优化策略,如合并小段,以及如何调整缓存大小、使用多线程等...