将“流行”因素与 zend-search lucene 正确集成的最佳方法是啥?

Posted

技术标签:

【中文标题】将“流行”因素与 zend-search lucene 正确集成的最佳方法是啥?【英文标题】:What is the best way to properly integrate a "popularity" factor with zend-search lucene?将“流行”因素与 zend-search lucene 正确集成的最佳方法是什么? 【发布时间】:2012-12-14 06:30:35 【问题描述】:

我已经阅读了this,但我仍然对如何进行操作感到有些困惑。

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

【问题讨论】:

【参考方案1】:

您不必调整评分算法(实现tf-idf btw)。

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

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

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

还有一个问题:

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

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

【讨论】:

谢谢。这很好用。您介意解释一下哪种情况更适合线性提升与 exp 或 sqrt 提升吗?我想了解更多关于提升 exp 或 sqrt 的优缺点。我大致了解 exp 或 sqrt 提升会做什么,我只是在寻找实际场景/示例,您可以在其中使用一个而不是另一个,以便我可以更好地衡量我应该使用哪个。我在想,在这种情况下,我应该使用 sqrt,以便在处理大量投票时投票不会压倒搜索词。 另外,感谢您提供指向 ElasticSearch 的链接。如果我遇到 zend lucene 的性能问题,我可能会考虑切换搜索引擎。我主要使用它是因为它恰好是我遇到的第一个搜索引擎,它似乎符合我的需求,并且它有一个很好的设置示例可供参考

以上是关于将“流行”因素与 zend-search lucene 正确集成的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Coldfusion / Lucee - 使用一个查询循环遍历3D数组以使用多个插入插入到数据库中

通过 AJAX 进行 Coldfusion/Lucee 多条件选择

Plackett-Luce模型算法介绍

L'opzione di luce del puntatore laser

lucee 5.x ListEach似乎无法访问本地var范围?

Elk的理论与实践