全文搜索中的相关性评分量化了文档与搜索查询的匹配程度。 它是搜索引擎计算出的一个数值,用于对结果进行排序,确保最相关的文档首先出现。 此分数由分析关键字频率、文档结构和术语邻近度等因素的算法确定。 例如,如果您搜索“数据库优化”,那么在重要字段(如标题)中多次包含这两个术语的文档通常会比匹配次数较少或匹配在不太重要区域的文档获得更高的分数。
相关性评分的计算通常依赖于 TF-IDF (词频-逆文档频率) 或 BM25 (最佳匹配 25) 等算法。 TF-IDF 评估两个因素:一个术语在文档中出现的频率(词频)以及该术语在所有文档中的稀有程度(逆文档频率)。 例如,如果“优化”在一个文档中频繁出现但在其他文档中很少出现,那么它会提高该文档的分数。 BM25 是一种更现代的方法,通过考虑文档长度来改进 TF-IDF。 一个非常长的文档可能会稀释重复术语的重要性,因此 BM25 会调整分数以避免偏向过于冗长的内容。 Elasticsearch 和 Lucene 等搜索引擎默认使用 BM25,平衡词频和文档长度以获得更公平的排名。
开发人员可以通过 boosting 或自定义评分逻辑等技术来影响相关性评分。 例如,您可以通过为标题分配更高的权重来提高文档标题字段中的匹配项的重要性,而不是其正文中的匹配项。 如果用户搜索“Python 教程”,那么标题中包含“Python”的文档可能会获得 2 倍的提升,从而使其排名更高。 有些系统还允许脚本自定义分数——比如惩罚过时的内容或优先考虑最近的文档。 了解相关性评分有助于开发人员调整搜索行为,确保用户在没有手动过滤的情况下获得有意义的结果。 Elasticsearch 的 Explain API 等工具允许开发人员通过显示各个因素如何影响最终排名来调试分数,从而实现精确的优化。