[Ferret-talk] Search Ferret Index for Use With Autocomplete / Options

Jens Kraemer jk at jkraemer.net
Mon Jun 16 08:12:28 EDT 2008


On 16.06.2008, at 13:08, Max Williams wrote:

> Gaudi Mi wrote:
>> I've got Ferret up and running for a Rails application and I'd like  
>> to
>> be able to use autocomplete in my text search field so that as the  
>> user
>> is typing each character of the search term, the index is queried for
>> matching terms starting with those characters, and they are  
>> displayed in
>> a list under the search box, like Google Suggest.
>>
>> I have searched the Ferret API but I can't find a way to do for  
>> example:
>>
>> Show all words in index that start with 's', then 'sp', then 'spa',  
>> etc.

This might be accomplished by using a TermEnum (http://ferret.davebalmain.com/api/classes/Ferret/Index/TermEnum.html 
) which basically is a list of all terms present in the index in a  
given field. Using term_enum.skip_to('s') should bring back the first  
term starting with letter 's', then get all other terms with s by  
calling term_enum.next as often as necessary.

Never tried this, but it should work.

However the 'common' way for autocomplete is indeed to base the  
completion on past searches, i.e. index user's successful queries and  
suggest matching past queries while the user is typing.

If that's really not what you want, you could also build up a second  
index containing all the terms that occur in your data, each as a  
document on its own (like your own dictionary), and get suggestions  
from there, with fuzzy queries if you like. This can also be used for  
'did you mean' stuff in case the user has a typo in his query and got  
no results because of that.

Cheers,
Jens

--
Jens Krämer
Finkenlust 14, 06449 Aschersleben, Germany
VAT Id DE251962952
http://www.jkraemer.net/ - Blog
http://www.omdb.org/     - The new free film database



More information about the Ferret-talk mailing list