İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

En iyi sonuç

ReGuaL

0
İyinet Üyesi
Katılım
1 Ekim 2006
Mesajlar
204
Reaction score
0
Merhaba arkadaşlar

mysql'de arama yapmak istiyorum da, iyi sonuç veren bir yöntem bulamadım.

Şunları denedim:

PHP:
SELECT * FROM people WHERE MATCH (name,lastname,about) AGAINST ('Recep Tayyip Erdoğan') ORDER BY name,lastname ASC;

PHP:
SELECT * FROM people WHERE lastname LIKE '%Erdoğan%' || name LIKE '%Recep Tayyip%' ORDER BY name, lastname ASC

Sizin yöntemleriniz neler acaba?
 

*siber*

0
İyinet Üyesi
Katılım
20 Temmuz 2005
Mesajlar
2,014
Reaction score
1
Konum
about:blank
daha iyi sonuç derken ? bu şekildeki aramanı LIKE ile karşılayabilirsin. ama gelişmiş arama istiyorsan AGAINST kullan.

Mesela AGAINST ile bir ARMUT kelimesini ararken aynı zamanda ELMA kelimesi geçen sonuçları da çıkarabilirsin.

Hız bakımından da basit arama için sanırım LIKE daha hızlıdır. Bunu mysql kategorisinde sorarsan daha bilgili arkadaşlar var.
 

ReGuaL

0
İyinet Üyesi
Katılım
1 Ekim 2006
Mesajlar
204
Reaction score
0
Ya şimdi benim şöyle bir sorunum var;

Sonuçları 2 field'den çekmem lazım "name ve lastname".

PHP:
$query = "SELECT name,lastname,about,picture FROM people WHERE name LIKE '%$adi%' || lastname LIKE '%".$bol[($kac-1)]."%' ORDER BY name, lastname ASC";

Bunu kullanıyorum fakat, atıyorum "Ahmet Can" diye aradığımda şu sonuçlarıda veriyor:

Ahmet Caner, Eren Caner, Mustafa Can

Tam isabetli bir aramanın tekniğini bulamadım. En azından yeni olduğum için beceremedim.
 

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
$query = "SELECT name,lastname,about,picture FROM people WHERE name LIKE '%$adi%' AND lastname LIKE '%".$bol[($kac-1)]."%' ORDER BY name, lastname ASC";
 

ReGuaL

0
İyinet Üyesi
Katılım
1 Ekim 2006
Mesajlar
204
Reaction score
0
Peki burada lastname bos olursa neden sonuç bulamaz ki?

PHP:
SELECT name,lastname,about,picture FROM people WHERE name LIKE '%Mehmet%' AND lastname LIKE '' ORDER BY name, lastname ASC
 

hakimi

0
İyinet Üyesi
Katılım
1 Temmuz 2006
Mesajlar
1,356
Reaction score
0
bunu kulaln çok işine yarayacaktır eminim be nbayağı uğraştım bu hale getirinceye kadar.
PHP:
$qtag=mysql_query("Select * from tags order by tarih DESC limit 0,10");
   while ($rtag= mysql_fetch_array($qtag)) {
$varam = $rtag['tag'];   
$varam = dur($varam);
$q=mysql_query("SELECT *, MATCH(adi, acik) AGAINST('$varam') AS score FROM table WHERE kilit=0 and MATCH(adi, acik) AGAINST('$varam') 
            ORDER BY score DESC LIMIT 0,2") or die(mysql_error());
   while ($r= mysql_fetch_array($q)) {
}
burda yapılmak istenen tags tablosundan tarihe göre alınan 10 kelimeden, her kelimeyle en alakalı 2şer sonuç elde etmek kombinasyonlar değişebilir. ancak bunu çalışması için gerekli field ların fullindexi çıkartılması gerekiyor (bknz. google). aramada sonuçları alakaya göre (score la) 1 den 0,01 e kadar alakaya göre sıraladığı için en alakalı 2 sonucu alıyoruz. Hem like kadar serverı yormaz hem alaka seviyesi çok daha iyi.
bu arada fullindex kullanımında derinlere inerseniz harika olduğunu göreceksiniz ki like ı asla tavsiye etmiyorum like la yapabileceklerinizin fazlasını fullindex arama ile yapabiliyorsunuz.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst