Benim e-alışveriş için bir site arama özelliği oluşturma ve benim sorgu sipariş için aşağıdaki kodu kullanıyorum:
ORDER BY((case when name RLIKE $wholeword then 3 else 0 end) + (case when name RLIKE $partialword then 1 else 0)) DESC
Bu veritabanından komple ve parsiyel maçları hem seçer ve kısmi maçlarda tam karşılaşmalar öncelik vererek onları emreder. Ancak, bana aşağıdaki sorgu sahip sonuçlanır hazırlanmış deyimleri kullanarak çevirdim:
ORDER BY((case when name RLIKE ? then 3 else 0 end) + (case when name RLIKE ? then 1 else 0)) DESC
Tabii ki, bu sorguda '$ WholeWord' ve '$ partialword' hem de değiştirilir '?' alaka hesaplanırken ve böylece aynı görünüyor. Tam karşılaşmalar artık kısmi maçlarda öncelik verilir anlamına gelir. Ben sipariş verirken iki sorguları ayırmak için bir yol gerekir.
Not: sorgu hala çalışır ama artık sıralarken $ WholeWord ve $ partialword için farklı ağırlık sağlar.
Herkes herhangi bir fikir var mı? herhangi bir yardım büyük mutluluk duyacağız!
Nico
edit: emphasized ORDER BY part of the query (removed the rest)