あなたが暗号化されたテキストを検索することはできません - 最初の場所でそれを暗号化の目的を台無しにしてしまいます。文字列の異なる部分が完全に異なる値に暗号化されていることに気付いたように、これは設計によるものであるか、暗号化をもっと簡単にすることになります。
あなたはになります。 doは、検索し、それらのハッシュを別のテーブルに保存して親に戻すテキストのハッシュです。
表parent
(暗号化された文字列)
id string
1 xyzxyzxyzxyzxyzxyz (encrypted 'hello my friend')
次に、あなたはstring
word
に部品を分解します。このアレイ上
var words = string.split(' '); // words is an array of ['hello', 'my', 'friend']
反復し、「インデックス」テーブルにこれらのハッシュを挿入し、words
のそれぞれについてハッシュを計算します。
表words
(索引語が暗号化された親にハッシュ)
id parent_id hash
1 1 abc (hash of "hello")
2 1 def (hash of "my")
3 1 ghi (hash of "friend")
この時点では、別の単語に検索クエリを構成する彼らのハッシュを計算し、その後、いずれかのparent_id
を返すことができるだろう一致します。 の場合はとなります。バリエーションがあれば、計算されたハッシュが変更されるため、すべてを小文字にすることをお勧めします。
"hello"を検索していると仮定すると、 "abc"というハッシュを計算し、次のSQLクエリを実行します。
SELECT p.id, p.string
FROM parent p
JOIN words w ON p.id = w.parent_id
WHERE w.hash IN ('abc')
GROUP BY p.id