0

私のデータベースには、小さな変更を加えて頻繁に作成および再作成される名前のタイトルがいくつかあります。手動で目で確認すると、スペルがわずかに変更された重複として簡単に識別できます。例えば

リゾートイン、レスオルトイン、リゾートインなど
等々。私が探しているのは、重複として検索しているキーワードのパーセンテージ一致を提供するソリューションです。ソースセットは十分に大きくないかもしれませんが、参照セットは何百万ものデータになる可能性があります. したがって、潜在的な mysql の「一致」はスケーラブルではありません。また、リファレンス セットは mysql と sphinx にインデックスが付けられています。現在の複製ロジックは、すべての複製を完全にキャプチャするわけではありません。例えば

モイ カン リゾート
モイカン
モイ カン リゾート
Moeyy-Knn アメリカン フード

私によると、これらはすべて重複しています。しかし、4番目はまったく捕らえられていません。私はそれらが同じように見えることを理解していますが、母音やその他のものを排除することで比較した後のいくつかのパーセンテージが役立つでしょう. ほとんどの場合、推奨される解決策は「php-sphinx」を使用することです。これは、そのほとんどが既に準備ができているか awk であるためです (可能であれば、適度に快適でもあります)。そうでない場合は、オープン ソース (python/perl など) のロジックで十分です。

4

1 に答える 1

0

http://php.net/manual/en/function.levenshtein.phpのようなものを使用 して、実際の「パーセンテージ」を得ることができます。

しかし、おそらく、ある種の「最初のパス」の一致が必要であり、可能性の高い候補が得られます (したがって、数百万行にわたってレーベンシュタインを実行する必要はありません)。

率直に言って、特に最後の例を考えると、Sphinxで何かを機能させるのに苦労すると思います。それは非常に異なります。役立つかもしれない唯一のことは http://sphinxsearch.com/docs/current.html#conf-morphology と Soundex/metaphone システムです。「類似した」単語が実際には同じように「聞こえる」可能性はわずかです。

于 2015-10-14T09:38:30.527 に答える