Приоритетные записи в поиске 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. Важна скорость поиска. Компактность индекса также важна, но второстепенна. Скорость построения индекса - третьестепенна.