[英]How to do order by case when on sphinx?
如何設置獅身人面像搜索的列優先級? 在自定義mysql代碼中,如下代碼。 如何將其重新編碼為獅身人面像搜索?
$orderBy = "ORDER BY
CASE WHEN SUBSTRING_INDEX(n.eser_adi, '/', 1) LIKE '% $termsAsil %' THEN 1
WHEN SUBSTRING_INDEX(n.eser_adi, '/', 1) LIKE '$terms' THEN 2
WHEN n.konu_basliklari LIKE '% $termsAsil %' THEN 3
WHEN n.konu_basliklari LIKE '$terms' THEN 4
WHEN yazar_adi LIKE '% $termsAsil %' THEN 5
WHEN yazar_adi LIKE '$terms' THEN 6
WHEN n.isbn LIKE '% $termsAsil %' THEN 7
WHEN n.isbn LIKE '$terms' THEN 8
WHEN yer_numarasi LIKE '$termsAsil%' THEN 9
ELSE 10
END ASC";
從技術上講,您可以將表達式放在SELECT部分中
sphinxQL> SELECT id,IF(col=2,1,2) as mysort FROM index ORDER BY mysort ASC
注意,沒有CASE語句,將使用IF()達到相同的效果。
但是沒有LIKE或SUBSTRING_INDEX函數,因此不會轉換。
但是,您看起來好像有搜索詞,因此可以操縱查詢以影響計算出的權重。 也可以使用Field-Weights調整相對權重。
sphinxQL> SELECT id FROM index WHERE
MATCH('$terms (@eser_adi ^terms | @eser_adi ^terms | @eser_adi "^terms$" | @konu_basliklari $termsAsil)')
http://sphinxsearch.com/docs/current.html#api-func-setfieldweights
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.