2012-11-26 24 views
1

是否可以根据字段值提升索引阶段的文档?SOLR索引时间提升取决于字段值

我正在索引从数据库中拉出的文本字段。我希望提高较长时间内的结果。所以boost的值应该取决于文本字段的长度。

这是需要改变标准SOLR行为,在我的情况下往往会首先返回具有多个匹配的文档。

考虑到我有一个存储文件的长度,我需要什么,在索引将查询相当于一个字段:{!提振B =开方(长度)}

Q =文本:ABCD

例子: 我在DB两个项目:

ABCDEBCE 
ABCD 

我总是希望得到ABCD先为'BC'即使其他项目包含搜索查询两次。

该问题的另一种解决方案是“关闭”在查询时刻分数更高的特征的功能。不知道这是否可能...

在索引时做这件事很重要,因为我运行SOLR的硬件功能不是太强大,并且试图通过OutOfMemory异常提高查询时间返回值。 (即使我能解决,对于Java增加内存我更愿意在安全方面,实施指数的最有效的方式。)

回答

0

是的,没有 - 而是你如何做到这一点取决于你如何是索引你的文件。

就我所知,目前没有办法只在solr服务器端解决这个问题。

如果您在使用常规的基于XML的接口提交文件,让生成的XML提交添加升压=代码“..”值字段或将取决于文本字段的长度的文件。

+0

我正在使用DataImportHandler从数据库导入数据。那里有什么选择会适合吗? – mrt

0

您可以检查在DIH Special Commands具有$docBoost命令

$ docBoost:提升当前的doc。值可以是数字或 toString的数字

但是,看起来没有$fieldBoost命令。

对于你的情况下,虽然,如果你正在使用DefaultSimilarity,较短的字段提振得分计算高于较长的字段。
您可以根据需要使用更改的TF(Term Frequency)和LengthNorm Calculation确实实现您自己的Simiarity类。