iTunes Search Algorithm/Data Structure?

Diez B. Roggisch deets at nospam.web.de
Thu Aug 17 11:06:36 EDT 2006


Bill Mill schrieb:
> Hello all,
> 
> What data structure would you use to implement something analogous to
> the iTunes search? I imagine that it must be a tree of some sort, but I
> can't figure out an easy structure for it.
> 
> Requirements (in case you haven't used it):
> 
> You are given 4 rows in a list view:
> [["alpha, "beta"], ["delta", "gamma"], ["foo", "bar"], ["etc", "etc"]]
> 
> and a search text box.
> 
> Typing "a" in the list box leaves rows 0, 1 and 2 in the list box,
> because some element in each of those rows has an "a" in it. Typing
> "am" leaves only row 1, since "gamma" has the substring "am" in it.
> 
> The key here is that this works instantaneously as you type, even with
> very large lists with many elements per row. I'd like the employee list
> in my current application to be similarly filtered, but I don't quite
> see how.
> 
> Thoughts?


Use an index. You can create one for each character, tuples of 
characters and so on that are contained in a word. That makes finding 
the entries a dict lookup + throwing the results together, filtering 
doubles.

I guess you can stop using indices at 3 or 4 characters, and then 
linearily search through the rest of the possibilities linearily.

Diez



More information about the Python-list mailing list