I’ve not come across this before - it’s certainly unexpected behaviour. Can you find the attribute definition in your constituent source within config/development.sphinx.conf and let me know what it is?
Also, when you say the ANY condition returns additional trait ids - do you mean the other traits associated with constituents that do have the given trait id? That’s normal behaviour - the trait ids returned aren’t filtered. However, if you mean constituents without the given trait id are being returned, then that certainly sounds like a bug. Which version of Sphinx are you using? — Pat > On 18 Dec 2014, at 8:00 am, Josh Lehman <[email protected]> wrote: > > For now, I was able to fix the issue by moving my primary key value to start > at 10000. The table I'm working with will likely never have more than a few > hundred entries so this should be safe, but it would be nice to understand > what may be driving the issue with the search. > > > On Wednesday, December 17, 2014 11:28:18 AM UTC-6, Josh Lehman wrote: > I have a model where an object can have multiple traits (similar to "tags") > related to them. I have a has_many relationship through a reference table to > match trait ID's back to a constituent. > > In order to facility all the various search conditions I want to offer (ANY, > ALL, NOT) I have traits set up as an attribute and I reference it in my > search in one of 3 ways. > > If the user opts for an "Any" search, I use a normal "with" trait_id in an > array of elements. > > If the user opts for "All" I, instead, do a "with_all" condition that > includes both trait_id values, as per the below: > > SELECT * FROM `constituent_core`, `constituent_delta` WHERE `sphinx_deleted` > = 0 AND `trait_id` = 1 AND `trait_id` = 7 ORDER BY `created_at` DESC LIMIT 0, > 25 OPTION max_matches=100000 > > The problem lies in the fact that when the with_all is done, I'm getting not > only records with trait_id 1 and 7 but also ANY record with a trait_id that > INCLUDES a 1 in the integer. So I'm getting all trait_id values of > 11,12,13,14,15, etc I assume because they also contain a "1". > > Wondering if I'm doing something wrong in how I create my "with_all" > conditions. Is there an "exact" flag I need to set? My index for this > parameter looks like this: > > has traits.id <http://traits.id/>, :as => :trait_id, :type => :integer > > Also, my "ANY" search condition which uses the "with" parameters also returns > all the additional trait ids as well. > > I'd never really experienced this before BUT this is also the first time I > think I've used a WITH or WITH_ALL param set on an ID where values exist > above 9. In the past I'd only used it on field status columns where the ID's > ranged from 1 to 6 max and this the issue never appeared. > > > > > > > > > -- > You received this message because you are subscribed to the Google Groups > "Thinking Sphinx" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at http://groups.google.com/group/thinking-sphinx > <http://groups.google.com/group/thinking-sphinx>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "Thinking Sphinx" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/thinking-sphinx. For more options, visit https://groups.google.com/d/optout.
