簡體   English   中英

在獅身人面像上如何按大小寫排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM