I ended up using a single index. I defined duplicate indexed fields for each text field. One preserved the user entered case, the other down-cased its contents. Then when the user does a search I either down-case their query or preserve case. It's working pretty well so far.
Matt Margolis On Wed, Jun 9, 2010 at 1:48 AM, Marcel Overdijk <[email protected]>wrote: > Thanks for your help we gonna implement this. > > On Jun 8, 5:32 pm, Pat Allan <[email protected]> wrote: > > Well, I'd recommend having the same attributes defined in both indexes, > and it doesn't hurt to have the same fields too (and it sounds like that's > how you'll approach things anyway). There's no way to inherit from other > indexes yet, though... > > > > All you need to do is just have multiple define_index blocks in your > model, and give them explicit names (well, the first one doesn't need it, > but wouldn't hurt). > > > > define_index 'articles_insensitive' do > > # fields, attributes > > > > set_property :charset_table => "0..9, A..Z->a..z, _, a..z, > U+410..U+42F->U+430..U+44F, U+430..U+44F" > > end > > > > define_index 'articles_sensitive' do > > # fields, attributes > > > > set_property :charset_table => "0..9, A..Z, _, a..z, > U+410..U+42F->U+430..U+44F, U+430..U+44F" > > end > > > > The one trick to keep in mind is that TS will append _core to the end of > these index definitions (and create *_delta indexes as well, if you're using > deltas). So, searching becomes: > > ThinkingSphinx.search 'foo', :indexes => ['articles_insensitive_core'] > > > > Not entirely sure if Article.search will work as well, but definitely > worth a shot :) > > > > -- > > Pat > > > > On 08/06/2010, at 11:37 PM, Marcel Overdijk wrote: > > > > > > > > > Great to hear multiple indexes are fully supported. > > > > > Do you if there is an example somewhere on the internet? > > > > > Is it also possible to define the charset_table per index? > > > > > The case insensitive index will need something like A-Z->a-z but the > > > case insensitive not. > > > > > On Jun 8, 1:32 pm, Pat Allan <[email protected]> wrote: > > >> Multiple indexes are supported, just not documented. You need to give > all indexes (except for the first) an explicit name: > > > > >> define_index "foo" do > > >> # ... > > >> end > > > > >> And sorry, I misunderstood - for *searching* on case > sensitive/insensitive, multiple indexes is definitely the approach you'll > need to follow. > > > > >> -- > > >> Pat > > > > >> On 08/06/2010, at 8:32 PM, Marcel Overdijk wrote: > > > > >>> Hi Pat, > > > > >>> I was thinking about using multiple indexes. 1 case insensitive (all > > >>> lower case chars) and 1 for case sensitive. > > > > >>> But I don't the status about defining multiple indexes in TS (it's > not > > >>> in the docs at least). > > >>> And would it be possible then to define the charset_table per index? > > > > >>> I'm also not sure if the sort option works in our case. Let me > > >>> explain.... > > > > >>> What we currently do is based on a defined sphinx query (q) check if > > >>> that query is valid for the given article. > > >>> We use this to autotag our article database. > > > > >>> def matches?(q, article) > > >>> return false if keywords.blank? > > >>> results = Article.search(q, :with => { :article_id => > > >>> article.id }, :match_mode => :extended) > > >>> results.length > 0 > > >>> end > > > > >>> Now the problem is sometimes we want to explicitly search case > > >>> sensitive and sometimes case insensitive. > > > > >>> On Jun 7, 2:16 pm, Pat Allan <[email protected]> wrote: > > >>>> Hi Marcel > > > > >>>> In that kind of situation, :sortable on a field isn't going to do > the trick. What you'll need to do is create two attributes using SQL > snippets, something like the following: > > > > >>>> has 'LOWER(table.column)', :as => :column_ci, :type => :string > > >>>> has column, :as => :column_cs, :type => string > > > > >>>> And then sort by either :column_ci (case-insensitive) or :column_cs > (case-sensitive). > > > > >>>> Let us know how you go :) > > > > >>>> -- > > >>>> Pat > > > > >>>> On 07/06/2010, at 10:01 PM, Marcel Overdijk wrote: > > > > >>>>> Hi Matt, > > > > >>>>> I have the same use case. > > > > >>>>> I want to be able to search both case sensitive and case > insensitive > > >>>>> based on checkbox entered by the user. > > >>>>> Did you find any solution for this? > > > > >>>>> Regards, > > >>>>> Marcel > > > > >>>>> On May 15, 7:47 pm, Matt Margolis <[email protected]> wrote: > > >>>>>> I have a search form where I want to allow the user to choose > between > > >>>>>> casesensitiveand case insensitive searching over several fields on > a > > >>>>>> model. Is there a clean way to achieve this flexibility with > Sphinx/ > > >>>>>> ThinkingSpinx? I am new to Sphinx but it is my understanding that > > >>>>>> indexing is lowercased by default? > > > > >>>>>> Thank you, > > >>>>>> Matt Margolis > > > > >>>>>> -- > > >>>>>> You received this message because you are subscribed to the Google > Groups "Thinking Sphinx" group. > > >>>>>> To post to this group, send email to > [email protected]. > > >>>>>> To unsubscribe from this group, send email to > [email protected]<thinking-sphinx%[email protected]> > . > > >>>>>> For more options, visit this group athttp:// > groups.google.com/group/thinking-sphinx?hl=en. > > > > >>>>> -- > > >>>>> You received this message because you are subscribed to the Google > Groups "Thinking Sphinx" group. > > >>>>> To post to this group, send email to > [email protected]. > > >>>>> To unsubscribe from this group, send email to > [email protected]<thinking-sphinx%[email protected]> > . > > >>>>> For more options, visit this group athttp:// > groups.google.com/group/thinking-sphinx?hl=en. > > > > >>> -- > > >>> You received this message because you are subscribed to the Google > Groups "Thinking Sphinx" group. > > >>> To post to this group, send email to > [email protected]. > > >>> To unsubscribe from this group, send email to > [email protected]<thinking-sphinx%[email protected]> > . > > >>> For more options, visit this group athttp:// > groups.google.com/group/thinking-sphinx?hl=en. > > > > > -- > > > You received this message because you are subscribed to the Google > Groups "Thinking Sphinx" group. > > > To post to this group, send email to [email protected]. > > > To unsubscribe from this group, send email to > [email protected]<thinking-sphinx%[email protected]> > . > > > For more options, visit this group athttp:// > groups.google.com/group/thinking-sphinx?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Thinking Sphinx" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<thinking-sphinx%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/thinking-sphinx?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Thinking Sphinx" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/thinking-sphinx?hl=en.
