Руководство по сфинксу говорит , что слияние индексов должно сохранять старые ключевые слова вместе с новыми:
Обратите внимание, однако, что «старые» ключевые слова не будут автоматически удаляться в таких случаях. Например, если есть ключевое слово «old», связанное с документом 123 в DSTINDEX, и ключевое слово «new», связанное с ним в SRCINDEX, документ 123 будет найден обоими ключевыми словами после слияния.
Я не могу воспроизвести это.
- У нас есть документ с идентификатором 1 и текстом 'one' в индексе
main
- Текст в таблице БД меняется с «один» на «два»
indexer --rotate delta
indexer --rotate --merge main delta
- Подождите, пока
searchd
перезагрузит индекс
- Теперь мы можем найти документ 1 по
SELECT id FROM main WHERE match('two')
, но match('one')
ничего не находит.
Источники для обоих индексов определяются по существу как:
sql_query = SELECT id, text FROM tbl
Я также пытался указать ключевые слова с помощью sql_joined_field
, и слияние не удерживает старые слова от него.
Означает ли это, что руководство неверно? Можно ли предположить, что если SRCINDEX имеет информацию для идентификатора (атрибуты и текстовые ключевые слова), процесс слияния отбрасывает все, что было в DSTINDEX для этого идентификатора, и заменяет его новой информацией?