Hi guys, Is there some way of getting ferret matches string, when i do a fuzzy search? The scenario is this: 1. The user search for ''show'' 2. Nothing was found 3. So I do a fuzzy search, passing ''show~'' 4. It gives me somes results, most of all was matched with ''showcase'' 5. So I want to tell the user that: Nothing was found with ''show'', didn''t you mean ''showcase''? So, how do i get the ferret matches string, that was ''showcase'' in that scenario? Thanks in advance, Jos? Valim -- Posted via http://www.ruby-forum.com/.
I''ve found out how to do that: You have a class ''Class'' with acts_as_ferret, so do that: queryObj = Class.aff_index.ferret_index.process_query(@query_string) searchObj = Class.aaf_index.ferret_index.searcher query_results = queryObj.terms(searchObj).collect! {|item| item[:text] }.uniq query_results.is_a?(Array) => true -- Posted via http://www.ruby-forum.com/.
On Tue, Sep 25, 2007 at 09:06:13PM +0200, Jos? Valim wrote:> I''ve found out how to do that: > > You have a class ''Class'' with acts_as_ferret, so do that: > > queryObj = Class.aff_index.ferret_index.process_query(@query_string) > searchObj = Class.aaf_index.ferret_index.searcher > > query_results = queryObj.terms(searchObj).collect! {|item| item[:text] > }.uniqright, however I doubt this kind of direct access to Ferret''s searcher will work with aaf''s DRb server. You should add a method like ''matching_terms(query_string)'' to aaf''s LocalIndex class to encapsulate above code, so you can call it across the DRb connection. Cheers, Jens -- Jens Kr?mer webit! Gesellschaft f?r neue Medien mbH Schnorrstra?e 76 | 01069 Dresden Telefon +49 351 46766-0 | Telefax +49 351 46766-66 kraemer at webit.de | www.webit.de Amtsgericht Dresden | HRB 15422 GF Sven Haubold, Hagen Malessa