RedisSearch возвращает одни и те же данные независимо от запроса

Поисковый запрос:FT.search logIndex "@country:{Brazil}"вернуть 3 страны с временной меткой user_id

Возвращаемые значения:

вместо страны Бразилия возвращаются данные Китая.

Я не нашел решения этой проблемы или, возможно, я новичок в RediSearch.

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

Это, конечно, не решает вашу проблему выше. Это просто лишний непрошеный совет! ;)

Другие вопросы по тегам