我已经阅读了this,我仍然对如何完全解决这个问题感到困惑.
我有一个未编制索引的字段,用于计算正在搜索的一组播放列表的投票数.主搜索工作正常,但我也希望将投票字段作为算法的一部分,我不知道如何将非索引字段作为其中的一部分.任何人都可以提供任何指导或示例吗?
解决方法:
您没有必要调整评分算法(实现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客户端.