php - 将 "popularity"因子与 zend-search lucene 正确集成的最佳方法是什么?

标签 php algorithm zend-search-lucene popularity scoring

我读过 this而且我仍然对如何进行操作感到困惑。

我有一个未索引的字段,用于计算正在搜索的一组播放列表的投票数。主搜索工作正常,但我还想将投票字段作为算法的一部分,但我不确定如何将非索引字段作为算法的一部分。谁能提供任何指导或示例?

最佳答案

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

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

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

此示例中的提升因子并不真正相关,因为您只有一个提升标准。如果你想提升非线性,你也可以使用 expsqrt在 $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/

相关文章:

java - 一起使用 Solr 和 Zends Lucene 端口

c++ - 应用于空范围的标准算法 any_of()、all_of() 和 none_of()

algorithm - 复杂度 O(log(n)) 是否等同于 O(sqrt(n))?

PHP/MySQL 按日期排序

javascript - 对 <iframe> 应用安全检查

数组比较(逐个元素)

lucene.net - Lucene:搜索时加载索引文件?

php - mysql数据的文本搜索技术

javascript - AJAX 请求未进入就绪状态 4

php - b"string"在 dd() 函数中是什么意思?