私の問題を説明しましょう。入力文字列と何千もの文字列を含む表があります。私は入力文字列に最も類似した*文字列を検索する最良の方法を探しています。検索では、10個の推奨文字列を類似度でソートしたリストが返されます。文字列には、データベース内の他の列に数値的な重み(人気度)が関連付けられているため、可能な場合は、重みの高いものが結果に表示される可能性が高くなります。データベース内の(類似した)文字列を検索するスケーラブルな方法
これを達成するための最良のライブラリは何ですか?私は、Elasticsearchに似た何かを探しています。私はこれらの種類のライブラリで多くの経験を持っていないので、プロジェクトや好ましくはオープンソースに含めるのは簡単なものが必要です。私はPython(FlaskとSQLAlchemy)とPostgreSQLを使用していますが、例えば、必要に応じてNode.js。
*私はまた、私が探している類似性の種類を明確にしたいと思います。理想的には、それは意味的類似性であるが、語彙的類似性も良好である。私は大丈夫で、実装が簡単で、可能な限りスケーラブルでパフォーマンスの高いものに満足しています。
例の入力文:
- 私はcangaroosが好きではありません。データベースから
例提案:
- Cangaroos私の好みではありません。
- カンガルーは邪悪です。
- 私はかつてカガルーを食べました。もう一度。
「cangaroo」はデータベースで頻繁に使用される単語ではないため、「cangaroo」という単語を含む文字列はすべて結果に表示される可能性が高いからです。おそらく「好きではない」を検出するのはずっと難しく、その部分は完全にオプションです。
p.s. PostgreSQLの全文検索でこのようなことができますか?
ありがとうございます。
Joanolo、ありがとう、完璧に働いた! – Ognjen
Flask-SQLAlchemyでこれを行う必要がある人は、私に知らせてください。私は自分のコードを投稿します。 – Ognjen