我读过 this而且我仍然对如何进行操作感到困惑。
我有一个未索引的字段,用于计算正在搜索的一组播放列表的投票数。主搜索工作正常,但我还想将投票字段作为算法的一部分,但我不确定如何将非索引字段作为算法的一部分。谁能提供任何指导或示例?
最佳答案
您不必调整评分算法(顺便说一句,它实现了 tf-idf)。
如果您只想将浏览量整合到评分计算中,您可以在将搜索文档添加到索引之前“提升”它,例如:
$doc = new Zend_Search_Lucene_Document();
$boostFactor = 0.1;
$doc->boost = (float)$numberOfVotes * $boostFactor;
// ..
$index->addDocument($doc);
$index->commit();
此示例中的提升因子并不真正相关,因为您只有一个提升标准。如果你想提升非线性,你也可以使用 exp或 sqrt在 $numberOfVotes 上。
但是另一个问题:
为什么不使用 ElasticSearch (或其他高性能搜索引擎)放在首位?
ElasticSearch 例如比 Zend Lucene 的 PHP 实现更强大、更快。另外,加入评分机制真的很容易,例如http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query.html 您可以使用类似 Elastica 的 PHP 客户端连同它。
关于php - 将 "popularity"因子与 zend-search lucene 正确集成的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14078868/