基本的に次のようなテーブル構造があります。
Items
ID: INT(10)
Title: CHAR(255)
ItemsWords
ID: INT(10)
ItemID: INT(10)
Word: CHAR(50)
「アイテム」レコードごとに、「ItemsWords」テーブルに複数のレコードがあります。
これを使用して、次のような単一の単語を含むすべてのアイテムを見つけることができます。
SELECT * FROM Items i, ItemsWords w WHERE w.ItemID=i.ID AND w.Word='WORD_TO_FIND'
これを使用して、次のようないくつかの単語のいずれかを含むすべてのアイテムを見つけることができます。
SELECT * FROM Items i, ItemsWords w
WHERE w.ItemID=i.ID
AND (w.Word='WORD_TO_FIND' OR w.Word='ANOTHER_WORD_TO_FIND')
しかし、同じテーブル構造を使用して、任意の数の検索語をすべて含む「アイテム」のみを検索できるようにしたいと考えています。
Items
テーブルには 100,000 を超えるレコードがあり、ItemWords
それよりも何倍も多くのテーブルがあるため、フルテキストを使用できることがわかっているため、これらの検索を非常に迅速に行い、サーバーへの影響を最小限に抑えるために、この方法で構造を設定しました。上記の単語または任意の単語の検索は、非常に高速です。
ありがとうございました!