1

サウンドバイトを保存するテーブルがあります。テーブルを読み取ってからテーブルを再読み取りし、重複に近いレコードを削除するループを作成しようとしました。

私のコードは次のようなものです:

Numbersound.where{id != nil}.order(:id).each do |sound|
  Numbersound.where{(id != sound.id) & (sound.wavelength = wavelength)}.each do |duplicate|
    if (duplicate.wavecount != nil)
      #compare wave files and check if the same
      if MatchSound.compare(sound.frames, sound.wavecount, duplicate.frames, duplicate.wavecount, 0.03)
        Numbersound.delete(duplicate.id)
      end
    end
  end

問題は、削除されたレコードをサウンド配列から削除する必要があることです。そうしないと、常に少なくとも 1 つの一致 (それ自体) が存在します。

かなり長い計算を実行する必要があるため、SQL を使用して比較を行うことはできません。

4

0 に答える 0