Solusi spesifik domain yang agak cepat mungkin untuk menghitung kesamaan string menggunakan SOUNDEX dan jarak numerik antara 2 string. Ini hanya akan sangat membantu jika Anda memiliki banyak kode produk.
Menggunakan UDF sederhana seperti di bawah ini Anda dapat mengekstrak karakter numerik dari string sehingga Anda kemudian bisa mendapatkan 2200 dari 'CLC 2200npk' dan 1100 dari 'CLC 1100' sehingga Anda sekarang dapat menentukan kedekatan berdasarkan output SOUNDEX dari setiap input serta kedekatan komponen numerik dari setiap input.
CREATE Function [dbo].[ExtractNumeric](@input VARCHAR(1000))
RETURNS INT
AS
BEGIN
WHILE PATINDEX('%[^0-9]%', @input) > 0
BEGIN
SET @input = STUFF(@input, PATINDEX('%[^0-9]%', @input), 1, '')
END
IF @input = '' OR @input IS NULL
SET @input = '0'
RETURN CAST(@input AS INT)
END
GO
Sejauh algoritme tujuan umum berjalan, ada beberapa yang dapat membantu Anda dengan berbagai tingkat keberhasilan tergantung pada ukuran kumpulan data dan persyaratan kinerja. (kedua tautan memiliki implementasi TSQL yang tersedia)
- Metafon Ganda - Algo ini akan memberi Anda kecocokan yang lebih baik daripada soundex dengan mengorbankan kecepatan, namun sangat bagus untuk koreksi ejaan.
- Levenshtein Distance - Ini akan menghitung berapa banyak penekanan tombol yang diperlukan untuk mengubah satu string menjadi string lain misalnya untuk berpindah dari 'CLC 2200npk' ke 'CLC 2200' adalah 3, sedangkan dari 'CLC 2200npk' ke 'CLC 1100' adalah 5.
Berikut adalah artikel menarik yang menerapkan kedua algos secara bersamaan yang dapat memberi Anda beberapa ide.
Semoga beberapa di antaranya bisa sedikit membantu.
EDIT:Ini adalah implementasi Jarak Levenshtein parsial yang jauh lebih cepat (baca posting itu tidak akan mengembalikan hasil yang sama persis dengan yang normal). Pada tabel pengujian saya yang terdiri dari 125.000 baris, ini berjalan dalam 6 detik dibandingkan dengan 60 detik untuk yang pertama saya tautkan.