2010-01-15 3 views
1

J'ai récemment installé think-sphinx sur mon application ruby ​​on rails. En première vue, tout fonctionne bien, je peux chercher des mots et il va les trouver. Maintenant, lorsque je tente d'ajouter des filtres (tels que, par exemple, les provinces, les catégories, etc.) en utilisant:Comment ajouter des conditions à la recherche think-sphinx?

MyModel.search 'hello' :conditions => 'category_id=1' par exemple, il me jetteront l'exception suivante:

erreur searchd (état : 1): invalide ou demande tronquée

J'ai lu quelques docs sur le plug-in pensée-sphynx, et je suppose que je dois faire quelque chose d'autre que cette syntaxe.

Pour résumer: jusqu'à présent, je viens d'installer le service Windows, puis j'ai défini un index dans un modèle, puis j'ai essayé de rechercher. Encore une fois, j'ai réussi tout en recherchant sans conditions, mais échoué lors de la recherche avec.

Toute aide sera appréciée.

Merci, Brian

Répondre

2

Si l'on suppose votre modèle has category_id:

MyModel.search 'hello', :with => {:category_id => 1} 

:conditions est pour la recherche plein texte attributs spécifiques, :with est des résultats de recherche de filtrage.

Plus d'informations ici: http://freelancing-gods.com/posts/a_concise_guide_to_using_thinking_sphinx

+0

Well. En fait, je travaille sur le modèle Annonce, et j'ai ce qui suit: acts_as_taggable_on: tags,: catégorie Si je voulais ajouter une condition dans la recherche de tags, que dois-je inclure dans mon index à l'annonce ? –

+0

En outre, vous devez savoir que je n'ai aucun modèle de balise. J'ai simplement les tables db et le plugin acts_as_taggable_on, que j'utilise sur le modèle Announcement comme je l'ai dit sur mon précédent commentaire. –

+0

C'est un problème non trivial, essayez a "concat (select tags.value où my_model_id = my_models.id)" ou similaire. Vous pouvez passer un SQL arbitraire, mon conseil serait de regarder le SQL généré dans le fichier sphinx.conf et de le désosser. – cwninja

Questions connexes