0

我正在建立一个 Solr 搜索引擎来搜索 300k 文档集合。在众多的索引字段中,一个重要的就是标签。我的想法是为每个文档分配一个标签向量,每个标签都有给定的权重(基本上取决于为该文档选择该标签的用户数量)。例如

Doc1 = {tag1:0.3, tag2:0.7, tag3:0.8, tag4:1}

Doc2 = {tag2:0.5, tag3:0.8, tag4:0.8, tag5=0.9}

使用此示例,当有人要求使用 tag4 标记的文档时,我当然会返回两个文档,但 Doc1 得分最高,因为它的 tag4 权重更高。

理想情况下,在 Solr 上实现此功能的方法类似于创建一个称为“标签”的多值字段,并在索引时为此类字段中包含的每个标签分配权重。所以,第一个问题:

是否可以在索引时手动分配词频(作为标签权重)?

根据我的发现……似乎不是!好的...一种解决方法是在 Doc1 的标签字段上复制例如 tag4 10 次,在 Doc2 的标签字段上仅复制 8 次。当然也有一些缺点和限制。

然而,即使有解决方法,我也无法解决更大的问题。我想定义我自己的分数。更适合我的具体情况的是 sort=tf(tags,tag4)。事实上,在这种情况下,TF 比 IDF 重要得多!不幸的是,这个功能(相关函数)将在 Solr 4 中发布:http ://wiki.apache.org/solr/FunctionQuery#tf

您是否知道如何更改 Solr 3.5 中的评分功能,更加重视 TF 而减少 IDF?

是否有任何黑客可以简单地做到这一点,或者您会更改 Lucene 源代码(如果是...什么和在哪里?),或者您会使用 Solr4 夜间构建?

提前感谢您的建议!

4

0 回答 0