2016-04-05 11 views
0

私は映画のテーブル(movie_id、タイトル)を持っていますが、1つの映画は多くのタイトル(異なる言語)を持つことができます。 すべてのタイトルでフルテキスト検索を実装したい場合は、関連性の高い映画を日付順に並べる必要があります。今、私はスフィンクスを使用して、これをやっている:スフィンクス:デフォルトのランキング方法はどのように変更できますか?

sql_joined_field = all_movie_titles from query; select movie_id as id, title  from tbl_movie_titles order by movie_id 

それは私が理解したよう1本の映画の各タイトルのキーワードのスフィンクス検索マッチこのように、検索 のために使用される唯一のフィールドですが、いくつかの映画には2を持っていますある映画の異なるタイトルでキーワードが重複することが多いため、結果の関連性の重みの計算は、1つの映画のすべてのタイトルの一致に依存します。このため、関連性が同じであるはずの2つの映画の重みが異なります。私は別のランクを使用しようとしましたが、とにかく結果は悪いです。 1つの映画の各タイトルの重量を個別に計算して最高を取るためにスフィンクスを作るにはどうすればいいですか? このタスクは、elasticsearchのような別の検索エンジンで簡単に解決できる場合は、私に教えてください。あなただけの1つの長い文字列として連結すべてタイトルを含むフィールドを効果的に作成した おかげ

答えて

1

(定義で「入社」)

だから、マルチ題した映画には、言葉の複数を持っていますあなたが言うように、ランキングに影響する可能性があります。

現在、あなたのスフィンクスのドキュメントをムービーとして持っているようです。つまり、(関係なく、あなたが映画のために持っているもののデータの)映画ごとに一つの文書


一つのオプションは、その後、タイトルごとに1つの文書(すなわち映画/言語組み合わせ)を持っている代わりに変更することですランキングは1つの言語の中にあります。

ムービーごとに結果がになるよう(おそらく)、クエリ時間はGROUP BYオプションを使用できます。 (つまり、movie_idattributeとすることを意味します)

関連する問題