MacでPostgreSQL 9.6.2をテストし、Ngramsで試してみてください。 wineryフィールドにGIN trigramインデックスがあるとします。PostgreSQL、trigrams and similarity
類似性(私はこれが推奨されていません知っている)の制限:私は2,3M行テーブル上のトライグラム検索を構築しています
SELECT set_limit(0.5);
。
マイセレクトコード:
SELECT winery, similarity(winery, 'chateau chevla blanc') AS similarity
FROM usr_wines
WHERE status=1 AND winery % 'chateau chevla blanc'
ORDER BY similarity DESC;
マイ結果(私のMac上で329ミリ秒):
Chateau ChevL Blanc 0,85
Chateau Blanc 0,736842
Chateau Blanc 0,736842
Chateau Blanc 0,736842
Chateau Blanc 0,736842
Chateau Blanc, 0,736842
Chateau Blanc 0,736842
Chateau Cheval Blanc 0,727273
Chateau Cheval Blanc 0,727273
Chateau Cheval Blanc 0,727273
Chateau Cheval Blanc (7) 0,666667
Chateau Cheval Blanc Cbo 0,64
Chateau Du Cheval Blanc 0,64
Chateau Du Cheval Blanc 0,64
まあ、私は "シャトー・ブラン" は類似性を持つことができる方法を理解していない>へこの場合シャトー・シュヴァル・ブラン "?私は2つの単語がまったく同じ "シャトー"と "ブラン"であることを理解していますが、他の単語 "cheval"はありません。
また、「Chateau ChevL Blanc」が最初に登場するのはなぜですか?手紙 "a"がありません!
私の目標は、ワイナリーの名前を間違えたとしても、すべての可能な重複を照合することです。私は何を取りこぼしたか ?
これは非常に素晴らしく解明された説明のjoanoloです。ありがとう!だから私は重複を照合するためのテストを続けます。 –
ベクトルを使った全文検索は、重複を照合する友人になることはできますか?またはトリグラムの使用を続ける必要がありますか? –
フルテキスト検索は、単語の重複を検索するのに役立ちます(必ずしも同じ順序である必要はありません)。スペルミスは許されません。 – joanolo