Приоритетные записи в поиске SphinxSearch

Имею достаточно большую таблицу table1 - порядка 300млн записей.

Осуществляю полнотекстовый sphinx-поиск по таблице table1. В конфиге sphinx.conf:

source mysql {
    type            = mysql
    sql_host        = localhost 
    sql_port        = 3306  
    sql_query_pre   = SET NAMES utf8    
}   
source table1:mysql {
    sql_user        = username
    sql_pass        = password
    sql_db          = dbname
    sql_query_range = SELECT MIN(id),MAX(id) FROM `table1`
    sql_range_step  = 50000;
    sql_ranged_throttle=0;
    sql_query       = SELECT field1,...,field10 FROM `table1` WHERE id BETWEEN $start AND $end                                          
}
...

Все работает хорошо. Но хотелось бы некоторым записям в таблице (например, с первичным ключем id равным 1 или 8) задать больший приоритет, чтобы при прочих равных условиях они выводились выше.

Идея такая:

При индексации Sphinx-ом, дописывать каждой такой записи некоторое длинное и не встречающееся нигде больше слово/текст, например "asdasd", изменив вышеописанный конфиг следующим образом:

sql_query       = SELECT field1,...,field10, IF(id in (1,8),'asdasd','') FROM `table1` WHERE id BETWEEN $start AND $end 

А далее уже при поиске по sphinx-индексу добавлять к искомому значению строку "asdasd":

Смартфон Samsung asdasd

Как такой способ скажется на производительности и на самом индексе? Влияет ли длина добаляемой строки "asdasd" на производительность или компактность индекса?

Возможно есть способ эффективнее и проще?

PS. Важна скорость поиска. Компактность индекса также важна, но второстепенна. Скорость построения индекса - третьестепенна.


Ответы (0 шт):