Hmm, looks like this is the limitation with raw SQL being used for facets - it's vastly harder to programmatically figure out what the facet values are.
Unfortunately, at this point, it looks like TS most definitely does not support raw SQL for facets. Feel free to investigate and patch - or at least add a ticket to the GitHub issues list - but I'm afraid I'm not going to be fixing this up soon, it's not high priority (within TS feature requests, and in life in general - not sure how much time I'll have to spend on TS over the next couple of months). Sorry, I realise this isn't particularly helpful. -- Pat On 23/08/2009, at 12:56 PM, pascal wrote: > > Hey Pat > > > Thanks a lot. Switching from String to Symbol brought me one step > further. The attribute is not doubled in the config file anymore and > the rake ts:in does not output a warning anymore. > > Unfortunately there is another problem now: > >>> Wine.facets > Querying Sphinx: > Wine Load (0.3ms) SELECT * FROM `wines` WHERE (`wines`.`id` IN > (51711515,887636893)) > Querying Sphinx: > Wine Load (0.3ms) SELECT * FROM `wines` WHERE (`wines`.`id` IN > (51711515,51711515,51711515)) > Querying Sphinx: > Wine Load (0.3ms) SELECT * FROM `wines` WHERE (`wines`.`id` IN > (51711515)) > NoMethodError: undefined method `(select group_concat(gf.id) from > geographic_features gf where gf.lft <= geographic_features.lft and > gf.rgt >= geographic_features.rgt)' for #<Wine:0x2583688> > from /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/ > active_record/attribute_methods.rb:260:in `method_missing' > from /opt/local/lib/ruby/gems/1.8/gems/freelancing-god-thinking- > sphinx-1.2.7/lib/thinking_sphinx/facet.rb:100:in `send' > from /opt/local/lib/ruby/gems/1.8/gems/freelancing-god-thinking- > sphinx-1.2.7/lib/thinking_sphinx/facet.rb:100:in `translate' > from /opt/local/lib/ruby/gems/1.8/gems/freelancing-god-thinking- > sphinx-1.2.7/lib/thinking_sphinx/facet.rb:75:in `value' > from /opt/local/lib/ruby/gems/1.8/gems/freelancing-god-thinking- > sphinx-1.2.7/lib/thinking_sphinx/facet_search.rb:112:in > `add_from_results' > > > > Looks like the custom SQL statement is used as a method name. So i > still must be doing something wrong :-( > > > If you are interested in code which validates the arguments of has()/ > indexes() (String or Symbol vor :as, are all keys known) in the > define_index block, then let me know. > > > > Pascal > > On Aug 23, 1:09 pm, Pat Allan <[email protected]> wrote: >> Actually, just figured the cause: you need to set the attribute's >> name >> as a symbol, not a string: >> :as => :helloworld >> >> This should avoid the name duplication (haven't looked into the code >> in depth to figure out why, just tried to add failing specs) >> >> -- >> Pat >> >> On 23/08/2009, at 11:54 AM, Pat Allan wrote: >> >> >> >> >> >>> Hi Pascal >> >>> Normally, TS should create two attributes, one named as you >>> requested, >>> the other with the _facet suffix - *IF* dealing with arrays of items >>> that aren't all integers (or timestamps, which can be considered >>> integers). Because you're using a manual SQL string, TS has no idea >>> what the underlying type is for items in the array, and so assumes >>> that they're strings, hence the duplication as a CRC'd version of >>> the >>> data. >> >>> That said, it should not be naming both versions of the attribute >>> the >>> same thing - so that's a bug. I'll try to investigate it today. >> >>> -- >>> Pat >> >>> On 23/08/2009, at 10:08 AM, pascal wrote: >> >>>> Hi >> >>>> I'm still trying to add a type multi attribute as a facet with a >>>> subselect query. >> >>>> When i add an attribute with a custom subselect with :type >>>> => :multi >>>> and :facet => true then the attribute appears twice in the config >>>> and >>>> "_facet" is appended to attribute name. >> >>>> So after: >>>> has '(select (group_concat ...) from ... where ...)', :as => >>>> 'helloworld', :type => :multi, :facet => true >> >>>> I have twice the attr config: >> >>>> sql_attr_multi = uint helloworld_facet from field >>>> sql_attr_multi = uint helloworld_facet from field >> >>>> and the helloworld_facet appears twice in the sql_query, once with >>>> IFNULL and once with CRC32 >> >>>> Running ts:in works nut yields following warning: >>>> WARNING: attribute 'helloworld_facet' not found - IGNORING >> >>>> Why is "_facet" appended to the name? >>>> Why is attribute config doubled? >> >>>> Thanks for your help. >> >>>> Pascal > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
