これは、(リレーショナル) データベースを使用した全文検索の設計に関するシステム アーキテクチャに関する質問です。私が使用している特定のソフトウェアは、Solr と PostgreSQL です。参考までに。
Andy と Betty という 2 人のユーザーがいるフォーラムを構築しているとします。
Post ID | User | Title | Content
--------|-------|-------------------|---------------------------
1 | Andy | Dark Knight rocks | Dark Knight rocks blah
2 | Betty | I love Twilight | Twilight blah blah
3 | Andy | Twilight sucks | Twilight sucks blah
4 | Betty | Andy sucks | Twilight rocks, Andy sucks
投稿テーブルが Solr でインデックス化されると、関連性によって並べ替えられた投稿を「?q=twilight」または「?q=dark+night」に簡単に返すことができます。
ここで、投稿の代わりにユーザーを検索する新しい機能を追加したいと考えています。単純な実装では、単純にユーザー名をインデックス付けして、"Andy" を "?q=a" に、"Betty" を "?q=b" に返しますが、システムをよりスマートにしてユーザーも考慮したい場合はどうでしょうか。Betty は Andy よりも Twilight に言及しているため、"Andy" の前に"Betty" を "?q=twilight" に投稿して返します。
何十万ものユーザーと何百万もの投稿のユーザー検索機能を効率的に処理するには、どのようにシステムを設計しますか?