Hi Famaz

What you’re trying to do is not possible (while searching on Users, at least). 
Sphinx has no concept of hashes/dictionaries… in your index, each user has a 
field called answer, which contains all the answers joined together in a single 
string, and then an array of question ids. There’s no relationship between 
question ids and each answer.

A better approach would be to define an index on ProfileAnswer, and search via 
that instead - and then display the user for each ProfileAnswer in the search 
results.

Cheers

— 
Pat

On 1 Mar 2014, at 12:38 pm, Farnaz Ronaghi <[email protected]> wrote:

> Hi Everyone, I have a question about indexing and searching relationships and 
> I'd appreciate any help.
> 
> 
> 
> I have a User model that indexes ProfileAnswer, a has_many relationship. I am 
> indexing profile_answers.response as well profile_answers.question_id .
> 
> I need to be able to run search queries that search a string for one 
> particular question.
> 
> Here is the way I am doing this which is wrong. with data points
> 
> A{
> 
> profile_answer{
>   id = 99
>   question_id = 1
>   answer = 'Hi'
> }
> 
> profile_answer{
>   id = 100
>   question_id = 2
>   answer = 'Bye'
> }
> 
> }
> B{
> 
>  profile_answer{
>      id = 102
>      question_id = 1
>     answer = 'Bye'
>  }
> 
>  profile_answer{
>     id = 101
>     question_id = 2
>     answer = 'Hi'
>  }
> 
> }
> A and B are both returned when I search for 'Hi' on question_id = 2.
> 
> Here is my index definition:
> 
>  indexes profile_answers.answer, sortable: true, as: "answer"
>  has profile_answers.question_id, as: "question_id"
> and do my search as:
> 
>   User.search('@answer "Hi"', match_mode: :extended, with: {question_id: 
> given_question.id})
> I have tried indexing some combination of these columns and search that but 
> that has never produced the right index.
> 
> 
> -- 
> 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