次の 2 つのテーブルを含む SQLite データベースがあります。
Objects:
object_id int,
name varchar(50)
Values:
key char(12),
value int,
object_id int
ご覧のとおり、各オブジェクトにはキーと値のペアのリストが含まれています。このリストには通常、10 ~ 60 のエントリが含まれます。(key, object_id) の組み合わせは、値テーブル内で一意です。
次に、ユーザーからキーと値のペアのリストを取得し、データベースで最も類似したオブジェクトを検索します。ユーザーが提供したオブジェクトは、ほとんどの場合、データベース内のオブジェクトと直接一致しません。
類似性とは、両方のオブジェクトのキーのリストがほぼ等しく、それらのキーの値が類似していることを意味します (ほとんどの場合、値も等しくありません)。リストは可変長にすることができます。
次のリストを検討してください。
A = { a: 10, b: 20, c: 30 }
B = { a: 11, c: 80, d: 90 }
C = { c: 70, d: 89, e: 40, f: 100 }
D = { c: 65, d: 80, e: 41 }
A と B の両方にキーaとcが含まれていますが、bとdはそのうちの 1 つにのみ含まれています。したがって、キーだけを見ると、類似度は 0.5 になります。A と D にはcのみが共通しており、 a、b、d、およびeは 1 つのリストにのみ含まれています。したがって、それらはあまり似ていません。
次のステップでは、一致するキーの値を探す必要があります。したがって、A と B の例では、キーaとcの値を比較する必要があります。aはよく似ていますが、 cはあまりよく一致しません。
そのような検索を SQLite で直接行うことは可能ですか? そうでない場合、検索を行うための最良の方法/アルゴリズムは何ですか? 検索はできるだけ高速にする必要がありますが、モバイル デバイスでこれを行っているため、計算能力やメモリを消費しすぎてはいけません。
このトピックに関するヘルプ、リンク、またはリソースをいただければ幸いです。