php - Sphinx - Sort results in a specific order -


in sphinx, want search rows containing keywords , sort them in specific order.

for example, search words 'dog', 'cat', 'lion' , sort in order such rows 'dog' listed first, followed rows 'cat', , 'lion'.

in sphinx, searching easy below query:

select * test_index match('test_string "dog" | "cat" | "lion"') 

how can sort rows in predefined order in sphinx?

you can order predefined list in sql.

complete sql:

select *    test_index   match('test_string "dog" | "cat" | "lion"')  order  case              when field = 'dog' 0              when field = 'cat' 1              when field = 'lion' 2            end  

yes sphinx doesn't support order case. if want short in predefined order can use sph_sort_extended. example in php following:

$sph->setsortmode(sph_sort_extended, "dog, cat, lion"); 

example:

article.search "term", :sort_mode => :extended,   :order => "project asc, company asc" 

source in detail


Comments