В Redis у меня есть полнотекстовый индекс документов JSON с полем lemma_exact
. Он привязан к массиву строк в базовом документе JSON.
Я могу найти определенную статью по индексу с помощью следующего запроса:
(@lemma_exact:{viking})
Это возвращает статью, которую я ищу. Однако, если я использую этот запрос:
(@lemma_exact:{*ing})
Я получаю статьи, в которых индексированное поле содержит значение, оканчивающееся на -ing. Это то, чего я хочу. Однако он включает не все статьи — в частности, как в этом примере, не ту, где поле «викинг».
Что здесь может быть не так?
Вещи, которые я уже проверил:
FT.SEARCH
, был достаточно большим, чтобы вместить все результаты.FT.SEARCH
до 10 000, но это ничего не изменило.Тайм-аут здесь тоже был моей первой мыслью, так что вы правильно об этом думаете. Вы всегда можете установить для поведения ON_TIMEOUT значение FAIL, чтобы убедиться, что тайм-аут не истек. Но 10 секунд — это вечность в терминах Redis, поэтому я сомневаюсь, что так и будет.
Однако, возможно, стоит поиграть с настройкой MAXPREFIXEXPANSIONS. Увеличение этого значения является компромиссом с производительностью, но я уже сталкивался с подобными проблемами, когда префикс или суффикс встречаются особенно часто. И -ing, безусловно, распространено.
Спасибо! Это действительно было
MAXPREFIXEXPANSIONS
. Установка значения 100 000 сработала, и я получил тысячи результатов, которые ожидал.