質問

渡ししていますテーブル約18000さい。各レコードを記述する場所の一つです。の発行する際に、作成したテーブルになったときに追加の分野のために"会社名"、"地名"と一つの会社ができます。

例えば、ここでは記録をするとともに、その同じお客様:

地表

 ID  Location_Name     
 1   TownShop#1        
 2   Town Shop - Loc 2 
 3   The Town Shop     
 4   TTS - Someplace   
 5   Town Shop,the 3   
 6   Toen Shop4        

私の目標は、"かしらの利点があるのでしょうか:

地表

 ID  Company_ID   Location_Name     
 1   1            Town Shop#1       
 2   1            Town Shop - Loc 2 
 3   1            The Town Shop     
 4   1            TTS - Someplace   
 5   1            Town Shop,the 3   
 6   1            Toen Shop4        

会社テーブル

 Company_ID  Company_Name  
 1           The Town Shop 

ありません"当社"と表いたしますの会社名リストからの記述は最高の場所の名前を表す複数の拠点

現在、私は考えていを生成しなければならないリストの場所の名前がつけられていますが類似しており、その後、そのリスト。

他のご提案できますよろしくお願いいたします。

@Neallマイナスイオンドライ算書のの、残念ながら各地の名前は、特異な重複した場所の名前だけます。その結果から計算書"repcount"が1にないですか。

@yukondude、ステップ4の心臓部である私の質問です。

役に立ちましたか?

解決

アップデートをしてください問いての一覧CompanyNames可能ですか?いまでも利用できるLevenshteinアルゴべきとの関係のリストでCompanyNamesとLocationNames.


更新

ありませんのリスト記載の会社名までの会社名の記述は最高の場所の名前を表す複数の拠点

でも大丈夫...してみてください:

  1. リストを構築する候補CompanyNamesよLocationNames多くはすべてのアルファベット文字です。利用できる 正規表現 ます。店のこのリスト別表に示す。
  2. 並べ替えることリストアルファベット順(手動)を作るべきCompanyNames.
  3. 比較を行いCompanyName各LocationNameをとって試合をスコアを使用 Levenshtein その他の文字列照合アルゴ).店舗の結果、別表に示す。
  4. 設定閾値スコア等のMatchScore < しきい値の検討は行われませんマッチの指定されたCompanyName.
  5. 手動獣のLocationNamesによるCompanyName|LocationName|MatchScore、ギャラリーも実際に戦いました。順序付けによるMatchScoreしっぱなしにしないといけないの過程で少しょう。

全体の目的は、上記の行為は、自動化部品の範囲の問題です。このメテオインフォマティクスが、期待され保存するトラブルの18K記録。

他のヒント

かなければいけなかったことです。のについて教えてくださいは手動で試合をすることになる。ご利用データベースのコンソールタグを選択します。第一に、追加の"会社名"フィールドに表示されます。その後:

SELECT count(*) AS repcount, "Location Name" FROM mytable
 WHERE "Company Name" IS NULL
 GROUP BY "Location Name"
 ORDER BY repcount DESC
 LIMIT 5;

図どのような会社の位置のトップのリストに所属し、その後の変更会社名フィールドア...が"地名"="の位置"です。

P.S.-い休みの会社名および所在地名が出て別々のテーブル参照することによりその主要な鍵となります。

更新:-なんと無重複?どのように多くの記録できますか?

思ってお奨めするも複雑なトークンをマッチングアルゴリズムっていますのでトリッキーなくまだデータがあまり多くないの相関(oなど)ではない非常に好評を得ております。

のものをお勧めしますを提出す仕事の アマゾンの機械的Turk して、人並べ替えます。

理想的にはあるんだろうっていテーブル名が会社をcompany_id列をこの"場所"テーブルは外部キーを当社のテーブルの主キーがあるのかもしれというidです。このようなイベントカレンダーのテキストの複製にこのテーブル(18,000列の整数の外部キーを節約することといった空間varcharカラム).

いの抱える方法を搭載する会社テーブルを適切に関連付けることにより、行す。ありません一般的な溶液が、なにができるのもこれらのテーマに沿った:

  1. を当社のテーブル、idカラムにオート単位(蓄積によって異なりRDBMS).
  2. すべてのユニークな会社名および挿入します。
  3. 追加カラムcompany_id、場所を受け入れるNull)のもととなる外部キーの会社です。idカラムです。
  4. 各行には所定の対象とする会社、アップデート行のcompany_id列しているのidです。これに挑戦します。場合データものを好きなように、例だと考えていく走ることの各種文字列照合アプローチ。
  5. 一度にすべての列に位置していcompany_id値きますので、その変更当社のテーブルを追加するNULLでない場合に制約のcompany_idカラムだと仮定するあらゆる場所 必要 会社は、合理的な).

だけではもったいないのコピーの場所を定義しなければいけませんで徐々に構築シリーズのSQL文を生成するためのcompany_id外ます。場になってしまうことができるため、開始、再スクリプトに失敗。

あり、そのステップ4から前後でdoozy.

どうせあいのこの手でできる場合がありま自動化、バルクです。の例の場所または、クエリは次のようにすれば、適切なcompany_id値:

UPDATE  Location
SET     Company_ID = 1
WHERE   (LOWER(Location_Name) LIKE '%to_n shop%'
OR      LOWER(Location_Name) LIKE '%tts%')
AND     Company_ID IS NULL;

ていると思いが一致例を加えた IS NULL 一部を書き込まないで設定されたCompany_ID値)ですが、もちろん18,000行使って、僕の創造性にあわせたレイアウトが可能です。

そして、もう一つがれ、名前の会社をクエリの一つです。なにができるのは、次のようなもの(MySQL):

SELECT  CONCAT('UPDATE Location SET Company_ID = ',
        Company_ID, ' WHERE LOWER(Location_Name) LIKE ',
        LOWER(REPLACE(Company_Name), ' ', '%'), ' AND Company_ID IS NULL;')
FROM    Company;

その走りの諸表を構築しています。ることがたくさんのグランジにおまかせください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top