Hi Yuri

It's certainly possible, but more complex - you'll need to construct the filter 
in a more manual manner. I think the following will work:

Digitalasset.search(
  select: "*, LENGTH(product_ids) = 0 OR IN(product_ids, #{ids.join(', ')} AS 
in_products",
  with: {in_products: true}
)

Though you need to be using Sphinx 2.1.2 or newer (that's when the LENGTH 
function was introduced to Sphinx).

If you're using Thinking Sphinx v3.0.6, that'll work, but you'll need to make 
changes as outlined in the release notes:
https://github.com/pat/thinking-sphinx/releases/v3.0.6

Or, you can upgrade to v3.1.0, which works with Sphinx 2.1.x releases as the 
default. A read of the release notes for other changes wouldn't hurt:
https://github.com/pat/thinking-sphinx/releases/v3.1.0

Cheers

-- 
Pat

On 1 Feb 2014, at 1:28 am, [email protected] wrote:

> Hi all,
> for first sorry for my english.
> 
> I've 3 tables in my DB
> - digitalassets
> - product_digitalassets
> - products
> 
> the 2nd table is a join table in a M:N relationship
> 
> I collect documents through digitalassets table and I've created an attribute 
> field in my Index:
> 
> as product_digitalassets.product_id, :as => :product_ids
> 
> in order to filtering the resultset.
> 
> In fact I send to search the query command: 
> 
> with: { product_ids: ids } where ids is an array of product ID
> 
> Everything is ok but now I want to retrieve not only the Digitalassets within 
> the list o product_ids but also the Digitalassets without a product 
> association.
> 
> I mean:
> 
> Digitalasset 1 -> products [1,2,3]
> Digitalasset 2 -> products [1,2,4]
> Digitalasset 3 -> products [5,6,7]
> Digitalasset 4 -> products NULL
> 
> How to get the Digitalasset 1, Digitalasset 2 and Digitalasset 4?
> 
> Now for me is sufficent to search with: { product_ids: [1,2] } -> result = 
> Digitalasset 1 and Digitalasset 2
> 
> But in this way I can not get the Digitalasset 4.
> 
> Thanks in advance.
> 
> -- 
> 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/groups/opt_out.

-- 
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/groups/opt_out.

Reply via email to