В текущем состоянии это не входит непосредственно в набор функций RediSearchemphasized text. Совпадающие теги не учитываются при подсчете очков. Пример:
127.0.0.1:6379> ft.create test SCHEMA mytags TAG
OK
127.0.0.1:6379> ft.add test one 1 FIELDS mytags "aa"
OK
127.0.0.1:6379> ft.add test two 1 FIELDS mytags "aa,bb"
OK
127.0.0.1:6379> ft.add test three 1 FIELDS mytags "aa,bb,cc"
OK
127.0.0.1:6379> ft.add test four 1 FIELDS mytags "aa,bb"
OK
При запросе добавьте аргумент WITHSCORES
:
127.0.0.1:6379> FT.SEARCH test "@mytags:{aa|bb|cc}" WITHSCORES
1) (integer) 4
2) "four"
3) "inf"
4) 1) "mytags"
2) "aa,bb"
5) "three"
6) "inf"
7) 1) "mytags"
2) "aa,bb,cc"
8) "two"
9) "inf"
10) 1) "mytags"
2) "aa,bb"
11) "one"
12) "inf"
13) 1) "mytags"
2) "aa"
"inf"
указывает на то, что этому матчу не присвоены очки, поэтому порядок здесь не учитывается для целей подсчета очков.
Я также попытался сделать это с помощью механизма агрегации и не смог найти способ создать конвейер, который эффективно подсчитывал бы совпадающие теги.
Это похоже на прямое использование, я зарегистрировал проблему для этого.
Пара обходных путей:
- Возможно, вы сможете использовать поле
TEXT
и необязательные предложения ("~Food|~Restaurant|~Chicago"
), но текстовое поле будет иметь немного другие свойства.
- RedisGears можно использовать для составления нескольких запросов в один результат.
person
stockholmux
schedule
07.07.2020