Merhabalar, sıkıntı çektiğim bir konuda yardıma ihtiyacım var.
Sorunum site içi arama konusunda. Şimdi normal bir aramayı LIKE %$kelime% şeklinde sorgulatarak mysql verilerini yazdırıyorum. Haberler diye aratınca haberler kelimesi geçen metinler çıkıyor sonuç olarak burada sorun yok. Ama istanbul haberleri diye aratınca sonuç çıkmıyor çünkü iki kelimenin bir arada geçtiği metin yok, ayrı ayrı metinlerde geçiyorlar. Ben her iki kelimenin ayrı ayrı geçtiği metinleri listeletmek istiyorum. Bunun örneği roketdownload'da var. Bana bu konuda mantık bakımından biraz yardım ederseniz sevinirim. Teşekkür ederim.
Php Arama Alogaritması
6
●827
- 14-12-2007, 14:04:54Aslında MySQL'in arama konusunda çok güzel bir özelliği var. Full Text şeklinde..
Öncelikle bu şekilde arama yapacağınız varchar, text gibi alanları belirtiyorsunuz. Daha sonra arama yapacağınız konuları FULL TEXT SEARCH biçimlerini kullanarak arıyorsunuz. Ayrıca bu arama şeklinde aramanın sonuçlarına göre puanlama yapabiliyorsunuz. Örneğin: hasan yaşar diye bir arama yaptığınızda, hasan yaşar kelimeleri yanyana ise 10, yanyana ama aralarında başka kelimeler varsa 9, çok farklı yerdelerse 8, sadece biri geçiyorsa 7 gibi çeşitli puanlar veriyor. Elbette puanlamalar benim verdiğim kadar basit değil, mesela hasan yaşar kelimesi bir metinde 4 kez geçiyorsa onun puanı ile 1 kez geçenin puanı farklı oluyor.
Ayrıntılı bilgi ve örnekleri : MySQL AB :: MySQL 5.0 Reference Manual :: 10.8.1 Natural Language Full-Text Searches adresinden alabilirsiniz..
Bahsettiğim örneğin sorgusu aşağıdaki şekilde olabilir..
SELECT id, baslik, yazi, MATCH (baslik, yazi) AGAINST ('hasan yaşar') AS puan FROM articles WHERE MATCH (baslik, yazi) AGAINST ('hasan yaşar'); - 14-12-2007, 14:51:07rica ederim, başkalarının da işine yarar umarımXempire adlı üyeden alıntı: mesajı görüntüle
- 14-12-2007, 23:16:49Burada türkçe anlatımı yapılmıştır diğer bir sitede www.php.org.tr de anlatılmış şuan siteye giremediğim için direk adresi veremiyorum sen kendin açılınca ararsın. Full text search diye