Можно ли обновить один Real-time Sphinx index
в parallel
?
Чтобы уточнить, у меня есть один индекс RT, например, с именем. RT1. Чтобы обновить RT1, я хочу иметь два или даже больше средств обновления.
Например, если в очереди 100 файлов, я хочу добавить 2 файла параллельно с индексом. Может ли Sphinx поддерживать многопоточность или Sphinx не безопасен для потоков?
Основной вопрос заключается в том, будет ли Sphinx повреждаться при одновременном добавлении нескольких файлов в один и тот же индекс? Я не смог найти ответ в документации.
Хорошо иметь в виду, я multithread
мой script
, который добавляет файлы в RT-индекс Sphinx. Поэтому несколько файлов будут добавлены одновременно (параллельно) к одному индексу.
Версия
Sphinx 2.2.9-id64-release (rel22-r5006)
Config:
index_name
{
type = rt
path = /mnt/data001/index_name
rt_field = FileName
rt_field = FileExtension
rt_field = FileContent
rt_field = FileTags
rt_attr_uint = FileReference
rt_attr_uint = FileSize
rt_attr_uint = LastModified
rt_attr_uint = LastModifiedYear
rt_attr_uint = LastModifiedMonth
rt_attr_uint = LastModifiedDay
rt_attr_string = FileContent
rt_mem_limit = 1024M
charset_table = A..Z, a..z, 0..9, U+E1, U+E9, U+FA
ondisk_attrs = pool
}
searchd
{
listen = 9306:mysql41
log = /var/log/sphinxsearch/searchd.log
read_timeout = 5
max_children = 30
pid_file = /var/run/searchd.pid
max_packet_size = 128M
binlog_path = /mnt/data001
}
Важно отметить, что строка может состоять только из A..Z, a..z, 0..9, U + E1, U + E9 и U + FA. (Я это подтвердил)
Тест:
для теста я использовал приложение C ++ в Ubuntu, которое связывается со Sphinx через коннекторы MySQL