MarkLogic中的Score和Relevance (一)

来源:互联网 发布:阿里云 yum 安装nginx 编辑:程序博客网 时间:2024/05/01 10:59

MarkLogic中的Score和Relevance

Relevance是衡量search结果与search term间相关的一个重要指标。

Score和relevance可以决定你的search结果集出现的sort顺序。毫无义务的,score越高,出现越靠前。

Marklogic产品针对score/relevance的计算大多都是基于index/fragment的。我们知道fragement与Index之间是有相互reference关系的,而且fragment中有一个重要的对象metadata,它维护着与index以及其他fragment之间的关系(如:一个document批成多个fragments,它们如何merger成一个document,这需要维护相互关系)。说回来,marklogic对relevance的支持涵盖的还是比较广泛的,主要有如下几个方面会影响到relevance的计算:

1:文档uploading

文档在uploading过程中,你可以设定相应的weight权重。例如:对于不同的文档归档档案夹(uri/collection)我们可以设置不同的权重。这样在search结果集中,来自不同文档档案夹的search结果它们的参与relavance计算的weight就不同,因而可以实现让你认为重要的文档类型排列在search结果集之前列。

例如:对于一个法律文书咨询查询平台,我们有三类文档。一是法律文书。二是相关该法律的案例文档。三是法律评论文章。在这个case中,用户最为关心的就是法律条文,其次是基于该法律条款发生的案件,最后是评论文章。因此我们可以规划相应的目录结构给他们各自,而且在uploading相关document时,设置不同的权重。这样当用户搜索“刑法101条”的时候可以保证,法律文书,案例,评论的排列次序。

2:数据库设置

Term Frequency Normalization

Marklogic 数据库提供TF normalization的设置,其中有6个不同的级别。它们的设置将会使用相应的marklogic对relevance的计算机制.


如你所看,有6个不同级别的对log的使用设置。我们知道marklogic的relevence计算算法是基于termfrequence的,正如下面将要介绍的logTF*logIDF或者logTF.他们都是依据TF的不同的是是否考虑document frequency。6个级别中的默认级别是scaled-log表示documentsize将被考虑到relevence计算之中,匹配的文档包含search term的“密度”越大那么他的score就会越高。而unscaled-log则完全不考虑documentsize的问题,而只考虑出现的蘋度。

如:一个search term为marklogic,在两个文档中均有出线,第一个文档中出现了100次,第二个文档中出现了200次。不同的是第一个文档的size是1000个字,第二个是10000个字。显然第一个文档出现的marklogic“密度”高。在scaled-log下:第一个文档score高。而在unscaled-log下:第二个score高,排在前列。

(需要做reindex)