4

我已经阅读了这篇文章,但我仍然对如何去做这件事有些困惑。

我有一个未编入索引的字段,它正在计算一组正在搜索的播放列表的投票数。主搜索工作正常,但我也想将投票字段作为算法的一部分包含在内,我不确定如何将非索引字段包含在其中。任何人都可以提供任何指导或示例吗?

4

1 回答 1

1

您不必一定要调整评分算法(顺便说一句,它实现了tf-idf)。

如果您只是想将视图数量整合到评分计算中,您可以在将搜索文档添加到索引之前“提升”搜索文档,例如:

$doc = new Zend_Search_Lucene_Document();
$boostFactor = 0.1;
$doc->boost = (float)$numberOfVotes * $boostFactor;
// ..
$index->addDocument($doc);
$index->commit();

此示例中的提升因子并不真正相关,因为您只有一个提升标准。如果你想提升非线性,你也可以在 $numberOfVotes 上使用expsqrt 。

但另一个问题:

为什么不首先使用ElasticSearch(或其他高性能搜索引擎)?

例如,ElasticSearch 比 Zend Lucene 的 PHP 实现更强大、更快速。另外,它很容易与评分机制挂钩,例如http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query.html 您可以使用像Elastica这样的 PHP 客户端。

于 2013-01-01T14:50:50.323 回答