Ah, just looking at the data you filtering by - can you add 0 to the  
forum_post_ids_from_user value? Then it won't filter out the result.  
Although it will also match any other *topics*.

Maybe what you want to do is combine forum_post ids and the parent id  
as well. Try the following:
   has [:id, forum_posts(:id)], :as => :ts_forum_posts_ids

-- 
Pat

On 26/05/2009, at 12:12 PM, Mickaël wrote:

>
> My development.sphinx.conf is here => http://pastebin.com/f5f57cae7 or
> for downloading it http://pastie.org/pastes/490409/download
>
> On 26 mai, 20:59, Pat Allan <[email protected]> wrote:
>> What's in your development.sphinx.conf file?
>>
>> --  
>> Pat
>>
>> On 26/05/2009, at 11:57 AM, Mickaël wrote:
>>
>>
>>
>>> Hi Pat,
>>
>>> Yes, when I'm searching with 'search' tool, or with TS (without
>>> filters), the result is equal.
>>
>>> When I'm searching with filter (:ts_forum_posts_ids) TS don't threat
>>> the foreign_key post_id NULL.
>>
>>> On 26 mai, 20:51, Pat Allan <[email protected]> wrote:
>>>> Hi Mickaël
>>
>>>> Hmm, not entirely sure what the problem is yet - but just so you
>>>> know,
>>>> Sphinx treats NULLs in attributes as 0's.
>>
>>>> If you remove the filters, do you get the same results as using the
>>>> 'search' command-line tool?
>>
>>>> --
>>>> Pat
>>
>>>> On 26/05/2009, at 9:19 AM, Mickaël Allain wrote:
>>
>>>>> Hi everybody,
>>
>>>>> I want to index and search over a class model (include has filter)
>>>>> which could be like this.
>>
>>>>> class ForumPost < ActiveRecord::Base
>>>>>   validates_presence_of :title, :content
>>
>>>>>   belongs_to :forum_section, :foreign_key=> :section_id
>>>>>   belongs_to :forum_post, :foreign_key=> :post_id
>>
>>>>> has_many 
>>>>>  :forum_posts,:foreign_key=> :post_id, :dependent=>:destroy
>>>>>   belongs_to :user
>>
>>>>> xss_terminate :html5lib_sanitize => [ :content ]
>>
>>>>>    # Definition de l index de recherche
>>>>>  define_index do
>>>>>    # General (Mots cles / Nom du forum / Sous-Forum Categorie /
>>>>> Auteur / Nombre de reponses)
>>>>>    indexes title, :as => :ts_forum_post_title
>>>>>    indexes content, :as => :ts_forum_post_content
>>
>>>>>    has forum_post(:id), :as => :ts_forum_post_ids
>>
>>>>>    # Propriete sur les recherches
>>>>>    set_property :enable_star => 1
>>>>>    set_property :min_prefix_len => 1
>>
>>>>>  end
>>>>> end
>>
>>>>> If the ForumPost is the TOPIC, they don't have forum_post value
>>>>> (NULL value), and their reply forum_post value will be the TOPIC  
>>>>> ID.
>>
>>>>> To be more clear, an example of my database
>>
>>>>> "id
>>>>> ";"title
>>>>> ";"content
>>>>> ";"user_id";"section_id";"post_id";"created_at";"updated_at"
>>>>> "41";"TOPIC";"<p>cvxcvxcvcx<br/></p>";"11";"15";NULL;"2009-05-06
>>>>> 10:01:07";"2009-05-06 10:01:07"
>>>>> "44";"reply_1";"<p>cxvxv<br/></p>";"11";"15";"41";"2009-05-06
>>>>> 10:01:50";"2009-05-06 10:01:50"
>>>>> "45";"reply_2";"<p>vxvcxvxc<br/></p>";"11";"15";"41";"2009-05-06
>>>>> 10:02:10";"2009-05-06 10:02:10"
>>
>>>>> When i'm searching for "cx*" in Search client, the result is good
>>
>>>>> search --config /home/gamez/project/uneek/trunk/config/
>>>>> development.sphinx.conf cx*
>>
>>>>> displaying matches:
>>>>> 1. document=410, weight=1, ts_forum_post_ids=41,
>>>>> sphinx_internal_id=41, class_crc=3624676887,
>>>>> subclass_crcs=(3624676887), sphinx_deleted=0
>>>>>     id=41
>>>>>     title=TOPIC
>>>>>     content=<p>cvxcvxcvcx<br/></p>
>>>>>     user_id=11
>>>>>     section_id=15
>>>>>     post_id=(NULL)
>>>>>     created_at=2009-05-06 10:01:07
>>>>>     updated_at=2009-05-06 10:01:07
>>>>> 2. document=440, weight=1, ts_forum_post_ids=44,
>>>>> sphinx_internal_id=44, class_crc=3624676887,
>>>>> subclass_crcs=(3624676887), sphinx_deleted=0
>>>>>     id=44
>>>>>     title=reply_1
>>>>>     content=<p>cxvxv<br/></p>
>>>>>     user_id=11
>>>>>     section_id=15
>>>>>     post_id=41
>>>>>     created_at=2009-05-06 10:01:50
>>>>>     updated_at=2009-05-06 10:01:50
>>>>> 3. document=440, weight=1, ts_forum_post_ids=45,
>>>>> sphinx_internal_id=45, class_crc=3624676887,
>>>>> subclass_crcs=(3624676887), sphinx_deleted=0
>>>>>     id=45
>>>>>     title=reply_2
>>>>>     content=<p>vxvcxvxc<br/></p>
>>>>>     user_id=11
>>>>>     section_id=15
>>>>>     post_id=41
>>>>>     created_at=2009-05-06 10:01:50
>>>>>     updated_at=2009-05-06 10:01:50
>>
>>>>> words:
>>>>> 1. 'cx*': 3 documents, 6 hits
>>
>>>>> But, With, thinkingSphinx search and has filter, the result is
>>>>> wrong.
>>
>>>>>     @searches = ThinkingSphinx::Search.search(params[:search]
>>>>> [:query], :per_page => self.per_page, :classes => [UserProfile,
>>>>> Community, Article, Event, Forum, Blog, BlogPost, BlogComment,
>>>>> Forum, ForumPost, ForumSection], :with => {
>>>>>         :ts_community_ids =>
>>>>> communities_ids_from_user(current_user.id),
>>>>>         :ts_blog_comments_ids =>
>>>>> blog_comments_ids_from_user(current_user.id),
>>>>>         :ts_blog_post_ids =>
>>>>> blog_posts_ids_from_user(current_user.id),
>>>>>         :ts_blog_ids => blog_ids_from_user(current_user.id),
>>>>>         :ts_forum_ids => forum_ids_from_user(current_user.id),
>>>>>         :ts_forum_post_ids =>
>>>>> forum_post_ids_from_user(current_user.id),
>>>>>         :ts_forum_section_ids =>
>>>>> forum_section_ids_from_user(current_user.id)
>>>>>         }
>>>>>     )
>>
>>>>> The :ts_forum_post_ids value is [36, 41, 44, 45, 63, 64] but,  
>>>>> Sphinx
>>>>> search, doesn't include 41 ID Document
>>
>>>>> /* Mongrel Log */
>>>>> Sphinx: cx*
>>>>> Sphinx Result: [44, 45]
>>
>>>>> But, if I delete the line, and search like this
>>
>>>>>     @searches = ThinkingSphinx::Search.search(params[:search]
>>>>> [:query], :per_page => self.per_page, :classes => [UserProfile,
>>>>> Community, Article, Event, Forum, Blog, BlogPost, BlogComment,
>>>>> Forum, ForumPost, ForumSection], :with => {
>>>>>         :ts_community_ids =>
>>>>> communities_ids_from_user(current_user.id),
>>>>>         :ts_blog_comments_ids =>
>>>>> blog_comments_ids_from_user(current_user.id),
>>>>>         :ts_blog_post_ids =>
>>>>> blog_posts_ids_from_user(current_user.id),
>>>>>         :ts_blog_ids => blog_ids_from_user(current_user.id),
>>>>>         :ts_forum_ids => forum_ids_from_user(current_user.id),
>>>>>         :ts_forum_section_ids =>
>>>>> forum_section_ids_from_user(current_user.id)
>>>>>         }
>>>>>     )
>>
>>>>> The result is good.
>>
>>>>> I think TS ignore docs when NULLABLE belongs_to is present and  
>>>>> when
>>>>> we using has keyword. Do you have some idea to fix them ? or i'm
>>>>> doing something wrong ?
>>
>>>>> Thank's.
>>
>>>>> Best regards,
>>
>>>>> Mickaël ALLAIN.
> >


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to