私はこれを読みました、そして私はそれについて正確にどうやって行くかについてまだ少し混乱しています。
検索されている一連のプレイリストの投票数をカウントしているインデックス付けされていないフィールドがあります。メイン検索は正常に機能しますが、アルゴリズムの一部として投票フィールドを含めたいので、インデックス付けされていないフィールドをその一部として含める方法がわかりません。誰かがガイダンスや例を提供できますか?
私はこれを読みました、そして私はそれについて正確にどうやって行くかについてまだ少し混乱しています。
検索されている一連のプレイリストの投票数をカウントしているインデックス付けされていないフィールドがあります。メイン検索は正常に機能しますが、アルゴリズムの一部として投票フィールドを含めたいので、インデックス付けされていないフィールドをその一部として含める方法がわかりません。誰かがガイダンスや例を提供できますか?
スコアリングアルゴリズム( tf-idf btwを実装する)を必ずしも適応させる必要はありません。
ビューの数をスコア計算に統合するだけの場合は、検索ドキュメントをインデックスに追加する前に「ブースト」できます。例:
$doc = new Zend_Search_Lucene_Document();
$boostFactor = 0.1;
$doc->boost = (float)$numberOfVotes * $boostFactor;
// ..
$index->addDocument($doc);
$index->commit();
この例のブースト係数は、ブースト基準が1つしかないため、実際には関係ありません。非線形をブーストしたい場合は、$numberOfVotesでexpまたはsqrtを使用することもできます。
しかし、別の質問:
そもそもElasticSearch(または別のパフォーマンスの高い検索エンジン)を使用してみませんか?
たとえば、ElasticSearchは、ZendLuceneのPHP実装よりもはるかに強力で高速です。さらに、スコアリングメカニズムに簡単に接続できます。例:http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query.htmlElastica などのPHPクライアントを一緒に使用できます。