Mysql veritabanında tam metin aramasında yaptığım arama sonuçlarını sıralayarak küçük bir sorunum var (umduğum şey). Ben denedim iki şekilde yazma:Tam metin araması sıralaması
DOĞAL YOLU:
SELECT SQL_CALC_FOUND_ROWS *,
MATCH(productname,keywords) AGAINST('$cl_search') AS score
FROM products
WHERE MATCH(productname,keywords) AGAINST('$cl_search')
ORDER BY score DESC,lastupdated DESC;
BOOLE YOLU:
SELECT SQL_CALC_FOUND_ROWS *,
((MATCH(productname) AGAINST('$cl_search' IN BOOLEAN MODE))+
(MATCH(keywords) AGAINST('\"$cl_search\"' IN BOOLEAN MODE))) AS score
FROM products
WHERE MATCH(productname,keywords) AGAINST('$cl_search')
ORDER BY score DESC,lastupdated DESC;
Ben doğal dil modunda arama yaparken ben almak indeksleme gibi
ama nasıl yapmam iyi arama sonuçları elde etmek için birisinin "çanta poşet çanta torbası" gibi bir ürün ismi olarak girmesini önlemek?
Bu sorunu düzeltmek için boolean yolunu yazdım ancak 1. daha yavaş ve 2. Diğer sözcüklerin indekslemesini 'kelime sayısıyla karşılaştır' gibi elde edemiyorum.
Her iki dünyanın en iyisini nasıl elde edeceğinize dair herhangi bir düşünce var mı?