2012-08-04 12 views
8

Bunun ne denli çalıştığını bilmiyorum ama çıktı için en çok karakter içeren/eşleşen bir satır seçmeye çalışıyorum. İşte denedim. bunu kırmak için Ne istiyorum gerçekten olduğunu alotofcharactersheremysql - en karakterleri eşleştir'i seçin

:

select * from table where title like '%alotofcharactershere%' limit 1 

yukarıda sadece bütün kelime için çalışan bir l o t ç e c h a r a c t e r s h e r e ve veren en uygun karakter içeren bir satırı bulun.

Ne hakkında konuştuğumu biliyorsanız lütfen yardım edin. Şimdiden teşekkür ederim.

cevap

1

Etrafta kazmaya başladım ve bir SQL uzmanı değilim, ancak eşleşmeyen karakterlerin değiştirilmesinden sonra, kuyruk uzunluğuna göre sıralamayı düşündüm. gibi

şey: gerçi SELECT * FROM your_table ORDER BY LENGTH(REGEXP_REPLACE(title, '[^abcdefg]', ''));

2 sorunları. Bulunan en farklı karakterlerle uyuşmuyor. Yani aaaa, abc'den daha yüksek bir değere sahip olacaktır. Ve bence abc'nin daha yüksek bir değer olmasını istiyorsun. 2. sorun muhtemelen en büyük, mySQL bu regex'i desteklemiyor. Ve emin bir şey yok. Ama ben bu yazıyı buldum:

Bence daha basit bir şey olmalı ve aslında kutunun dışında çalışan bir şey olmalı, bu cevap sadece birileri aklından düşünmek için düşünebilir.

da katılır bir sürü bir çözüm olabilir ama bu her şeyi seçerek daha büyük olasılıkla daha yavaş olduğunu ve Size yüzden merak başarmak istediğiniz şeyi açık değil

+0

Demek istediğim, her zaman ilk birkaç karakterin altını çizebiliriz ve bir benzetme yapabiliriz, ama yeni bir şey denemek istedim, bu yüzden buna yol açıyor .... – thevoipman

1

php (veya benzeri) içinde sıralamak Full Text Searches'u incelediniz. alaka düzeyi'u bulma olanağı size bazı fikirler veya alternatifler sağlayabilir.