2014-06-25 12 views
11

Sto cercando di creare un semplice sistema di autocompletamento simile alla demo qui: http://autocomplete.redis.io/ ma per qualche motivo non riesco a ottenere lo ZRANGEBYLEX per restituire i risultati corretti. Ecco quello che sto facendo sul Redis CLI:Come imitare la ricerca con completamento automatico con Redis ZRANGEBYLEX?

> zadd autocomplete 0 one 0 two 0 three 0 four 0 five 0 six 0 seven 0 eight 0 nine 0 ten 0 eleven 0 twelve 0 thirteen 0 fourteen 0 fifteen 

Il mio set sembra buono:

> zrangebylex autocomplete - + 
1) "eight" 
2) "eleven" 
3) "fifteen" 
4) "five" 
5) "four" 
6) "fourteen" 
7) "nine" 
8) "one" 
9) "seven" 
10) "six" 
11) "ten" 
12) "thirteen" 
13) "three" 
14) "twelve" 
15) "two" 

E se uso ZRANGEBYLEX come questo il risultato ha un senso:

zrangebylex autocomplete [e [eight 
1) "eight" 

Ma se voglio ottenere tutti gli elementi nel set che inizi con con una "e", provo questo (che è molto simile a quello mostrato dalla demo del completamento automatico) ma non restituisce la r risultati ight:

> zrangebylex autocomplete [e [e(0xff) 
(empty list or set) 

Cosa bisogna usare come params al comando ZRANGEBYLEX in modo che esso per adattarsi a qualsiasi stringa che inizia con "e" e qualsiasi altra cosa dopo?

risposta

15

questo farà il trucco:

127.0.0.1:6379> zrangebylex autocomplete [e "[e\xff" 
1) "eight" 
2) "eleven" 

Edit: Come notato da Itamar Haber nel suo commento qui sotto, quando si utilizza un client di codice, fate non bisogno di citazioni.

+0

Lo fa sicuramente. Cosa fanno esattamente le virgolette? –

+3

Apparentemente forza redis-cli per trattare il valore come una stringa letterale. Tuttavia, quando si utilizza un client normale dal codice, le virgolette non sono necessarie. –

+0

@ItamarHaber qual è il significato di '\ xff'? non capisco – BlackMamba

Problemi correlati