RedisSearch возвращает одни и те же данные независимо от запроса
1 ответ
Имеет ли возвращаемая запись несколько значений для страны? Если да, то мне сказали, что более ранние диалекты RediSearch будут возвращать только первый из них в списке, даже если он соответствует другому значению. Возможно, вы захотите попробовать использоватьDIALECT 3
когда ты звонишьFT.SEARCH
и посмотрим, поможет ли это.
Кроме того, вы, вероятно, можете улучшить свою схему:
FT.CREATE logIndex ON JSON PREFIX 1 log
SCHEMA
$.user_id AS user_id TEXT SORTABLE NOINDEX
$.timestamp AS timestamp TEXT SORTABLE
$.country AS country TAG SORTABLE
Я предполагаю, что, вероятно, имеет такие значения, какgroyse
,hchandani
, илиjamesz
.TEXT
поля предназначены для предложений и абзацев удобочитаемого текста. Я предполагаю, что это не описываетuser_id
. Это могло бы работать лучше в качествеTAG
.
Если вы конвертируетеtimestamp
в дату и время эпохи UNIX (в секундах), сохраните его в JSON как число и проиндексируйте какNUMERIC
тогда при вызове есть функции датыFT.AGGREGATE
которым вы можете воспользоваться.
Я бы конвертировал это в это:
FT.CREATE logIndex ON JSON PREFIX 1 log
SCHEMA
$.user_id AS user_id TAG SORTABLE NOINDEX
$.timestamp AS timestamp NUMERIC SORTABLE
$.country AS country TAG SORTABLE
Это, конечно, не решает вашу проблему выше. Это просто лишний непрошеный совет! ;)