単純なSQLite FTS3実装では、現在、ユーザークエリが保存された結果と一致し、これらの結果にユーザークエリのすべての単語が含まれている限り返されます(つまり、FTSテーブルは簡単なトークナイザ)。SQLiteで部分一致を含むFTS3検索
ここでは、結果に一致するクエリの単語数に基づいて検索結果のランク付け/並べ替えを行いたいと思っています。現在
SUBWAY FAST FOOD RESTAURANT
MCDONALDS FAST FOOD RESTAURANT
がこの順に
SUBWAY FAST FOOD RESTAURANT
MCDONALDS FAST FOOD RESTAURANT
CHIPOTLE FAST FOOD
PIZZA FAST FOOD
GOOD FOOD OUTLET
を返す必要が返す例えば、
SELECT name FROM nametable WHERE name MATCH 'fast food restaurant'
。言い換えれば、検索結果は必ずしもすべての単語のユーザクエリを含む結果に限定されるべきではなく、部分的に一致する結果を得るための余地を作りながら、リスト内のすべての単語を上位に含む結果を配置するべきである。
これを行う簡単な方法の1つは、ユーザーの入力のすべての順列を使用して複数のクエリを実行し、結果を必要な順序で結合することですが、それはむしろ非効率的です。
これは必要に応じて機能します。すべての順列の和集合を導く私のもともと提案された方法よりもスマートな解決策。よりネイティブな解決策がない限り、あなたの答えが私のニーズを最も満たすと思います。ありがとう。 – gc20