全文索引を使用せずに可能ですか、キーワードに基づいて巨大なテーブルを検索できますか?
用語を検索したいのですが、Country man working
次の結果が返されます。
- 田舎の男が働き始めた
- 失敗の瀬戸際にある国
- 男は仕事を始めた
全文索引を使用せずに可能ですか、キーワードに基づいて巨大なテーブルを検索できますか?
用語を検索したいのですが、Country man working
次の結果が返されます。
ノイズのある単語を除いた、辞書内のすべての単語を含むテーブルを作成します。
辞書キーワードテーブルをデータテーブルにリンクするテーブルを作成します
検索するテーブルのテキスト列に辞書の単語が表示されるリンクテーブルにレコードを作成するコードを記述します。
次に、次のように少し検索できます。
SELECT T.TextStuff
FROM KeywordTable AS K
JOIN LinkTable AS L ON L.KeywordID = K.KeywordID
JOIN TableToSearch AS T ON T.KeyWordID = L.KeywordID
WHERE K.Keyword = 'Country'
OR K.Keyword = 'man'
OR K.Keyword = 'working'
これは疑似コードにすぎませんが、うまくいけば、そのアイデアが実証されるでしょう。セットアップには時間がかかりますが、LIKEを大量に実行するよりもパフォーマンスが優れているはずです。
要約すると、行ごとに1つの単語があり、リンクテーブルで検索したい単語と一致するテーブルを調べ、そこから元のテーブルのレコードに到達できます。
これにより、必要な結果が返されます。
SELECT *
FROM TABLE
WHERE Field LIKE '%country%'
OR Field LIKE '%man%'
OR Field LIKE '%working%'
速度の保証はありませんが...
コメントからのメモ - これは実際にはこれを行う方法ではありません。全文索引作成は使用するアプローチですが、それがオプションではない理由について詳しく説明していません。