2012-03-09 8 views
1

私の現在のプロジェクトでは、ユーザはlikeの曲を手に入れることができます。今では、曲検索を追加して、前にlikedの曲を検索できます。指定したユーザーのドキュメントの検索を実装する方法は?

私は、以前にxapianを使用して検索エンジンを実装しました。これには、定期的にドキュメントのインデックスを構築することが含まれます。

私の場合、すべてのユーザーの曲のインデックスを個別に作成する必要がありますか?

検索結果をさらにreal-timeにしたい場合は、短い時間ごとにインデックスを段階的に作成する必要がありますか?

答えて

2

ご質問を別途お受け取りください。

すべてのユーザーの曲のインデックスを個別に作成する必要がありますか。

いいえ;この種の状況のた​​めの共通の技術は、各likeを、曲に関する情報とさらにユーザの識別子の両方を用いて別々に索引付けすることである。次に、あなたが検索したときに、実際にログインしているユーザー識別子によるユーザーの自然テキスト検索の結果をフィルタリングしたいとします。

Xapianでは、ユーザーを表す用語(適切な接頭辞、だからおそらくXU175のIDを持つユーザーの場合175)、次にOP_FILTERを使用して、ログインしているユーザーが好きなように検索を制限することができます。

[リアルタイムインデックス作成をサポートするために]短い期間ごとにインデックスを段階的に作成する必要がありますか?

これは、使用している検索システムに完全に依存しています。 Xapianでは、これを行い、生成されたデータベースを1つの基本的なものに定期的に '圧縮'することができます。 Xapianはシングルライターなので、キューに新しい好きなものを置いて、それをポップする単一のプロセスとインデックスを付けるなどして、シリアライズする方法を見つけたいかもしれませんデータベースに格納します。これに対する大部分の既成の解決策は、Solrと同じ役割を果たすXapian開発者の1人が書いたRestposeLuceneに対して実行することです。

また、あるデータベースにインデックスを作成し、別のデータベースに複製し、複製されたバージョンを検索して、将来的に水平に拡大縮小するオプションを提供することもできます。 Xapianのドキュメントにはdiscussion of replicationがあります。

関連する問題