Uygunluk olarak PHP MySQL Arama Ve Sipariş

3 Cevap php

Ben normal bir php mysql arama yapmak ve sonuçları görüntülemek için biliyorum. Ancak, ben gerçekleştirmek için çalışıyorum ne doğanın ben alaka göre sıralamak gerekiyor. Bana bu daha iyi açıklayayım:

Normal Sorgu "apple iphone uygulamaları"% apple iphone uygulaması% kullanarak veritabanı arayacaktır, ama bu tam sırası olduğunu ifade gösterilecek kayıtlar orada yoksa, arama hiçbir şey üretecek.

Ne temelde tüm yapmanız gereken ayrı ayrı 'elma', 'iphone' ve 'uygulamaları' için arama ve sonra içine sonuçlarını birleştirme ve sonra kayıtları bulunan kaç örnekleri kelimenin tarafından sınıfa alaka gerekir . Ben yapmak istediğim şeyi yaptım ve Örneğin; aşağıdaki onları geri döndü:

Iphone Applications From Apple
Apple Make The Best Apple Iphone Applications
Iphone Applications

Bunlar aşağıdaki gibi sıralamak istiyoruz:

Apple Make The Best Apple Iphone Applications
Iphone Applications From Apple
Iphone Applications

Bulunan kaç örnekleri arama terimleri yüzünden. Bkz vurgulanır:

[Apple] Make The Best [Apple] [Iphone] [Applications]
[Iphone] [Applications] From [Apple]
[Iphone] [Applications]

Ben yeterince iyi bu açıkladı ve herkes bana herhangi bir işaretçiler verebilir eğer ben son derece minnettar olacağını umuyoruz.

3 Cevap

take a look at the MySQL FULLTEXT search functions, These should automatically return results by relevancy, and give you much more control over your searches

Tam metin dizinleri kullanarak sadece potansiyel sorun, onlar InnoDB tablolar tarafından desteklenmiyor olmasıdır.

Hızlı google bana verdi this link.

Örnek:

select title, match (title,content) against (”internet”) as score 
from cont 
where match (title,content) against (”internet”) limit 10;
SELECT field2, field3, ..., MATCH(field1, field2) AGAINST ("search string") AS relevance WHERE MATCH(field1, field2) AGAINST "search string" ORDER BY relevance DESC LIMIT 0,10

Sonuç kümesinde, sonuçlarını sıralamak için burada kullanılan bir alan "alaka", olacaktır.