A Stab at Auto-Completion
How do you implement an auto-complete feature?
There is not an infinite set of words out there.
Let’s say we have these words:
lady
ladybird
land
laser
laserbeam
laserface
lasergun
lemon
lemons
less
lesson
lord
lordhuron
When we get l
, we return:
lady
ladybird
land
laser
laserbeam
laserface
lasergun
lemon
lemons
less
lesson
lord
lordhuron
le
returns:
lemon
lemons
less
lesson
lem
returns:
lemon
lemons
We would use a tree structure to store the options.
l
a
d
y
.
b
i
r
d
.
n
d
.
s
e
r
.
b
e
a
m
.
f
a
c
e
.
g
u
n
.
e
m
o
n
.
s
.
s
s
.
o
n
.
o
r
d
.
h
u
r
o
n
.
There would need to be a special value to indicate the end of a path, .
in
this case. We’ll use some input to navitage down the tree. From any point, we
can see which branches remain from there that terminate with .
. Those are our
values.
If we get las
as input, we start from here:
s
e
r
.
b
e
a
m
.
f
a
c
e
.
g
u
n
.
If we trace out each branch, we get:
laser.
laserbeam.
laserface.
lasergun.
I don’t know if this is the fastest approach, but it should work. Let’s see.
…
Yep, seems to work alright.
https://github.com/reergymerej/suggest
Let’s see what the “proper” way is to do this now…