php – 将“流行度”因素与zend-search lucene正确集成的最佳方法是什么?

我已经阅读了this,我仍然对如何完全解决这个问题感到困惑.

我有一个未编制索引的字段,用于计算正在搜索的一组播放列表的投票数.主搜索工作正常,但我也希望将投票字段作为算法的一部分,我不知道如何将非索引字段作为其中的一部分.任何人都可以提供任何指导或示例吗?

解决方法:

您没有必要调整评分算法(实现tf-idf btw).

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

$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客户端.

上一篇:【贪心】【TOJ4107】【A simple problem】


下一篇:《Kubernetes权威指南》——入门