0

どのようにアプローチすればよいかわからないデータベース (具体的には sqlite) クエリに直面しています。

'name' 属性と定数の間に 1-n 個の単語が一致するすべてのタプルを探しています。降順でソートされます。

たとえば、食品を含むデータベースです。定数が「Maranatha Natural Almond Butter 26oz Lightly Roasted」の場合、その定数の単語の少なくとも 1 つを含むデータベース内のタプルが返されるようにします。たとえば、「アーモンド バター ナチュラル」は「マラナタ ナチュラル」の前に来て、「アーモンド」の前に来ます。

基本的に、tuples 属性と定数の間に交差する単語が 1 つある限り、一致していると見なされます。

4

1 に答える 1

0

一致する単語は、SQLite の全文検索拡張機能が設計されているものです。そのページを読んで、SQLite をコンパイルする方法と可能なことを確認してください。ただし、いくつかのコメントを追加します。

単純なマッチングは、次のようなクエリで行われます。

SELECT * FROM foods_fts_tab WHERE name MATCH 'Maranatha Natural Almond etc.'

これは、少なくとも 1 つの単語が一致するすべてのレコードを返します。

補助関数によって返される情報を使用して、一致に重みを付けることができます。例えば、

SELECT ... ORDER BY length(offsets(foods_fts_tab)) DESC

一致する単語の数で並べ替えます。

一致する単語の数を求めていますが、実際の検索エンジンは他の情報も使用して関連性スコアを計算します。matchinfo()セクション 4.3の関数と付録 A の例を参照してください。

于 2012-09-27T20:51:33.633 に答える