Je suivais le documentation sur FullTextSearch dans postgresql. J'ai créé une colonne tsvector et ajouté les informations dont j'avais besoin, et finalement j'ai créé un index. Maintenant, pour faire la recherche que je dois exécuter une requête comme celui-cipostgresql requête de recherche plein texte à django ORM
SELECT *, ts_rank_cd(textsearchable_index_col, query) AS rank
FROM client, plainto_tsquery('famille age') query
WHERE textsearchable_index_col @@ query
ORDER BY rank DESC LIMIT 10;
Je veux être en mesure d'exécuter avec cette ORM de Django pour que je puisse obtenir les objets. (Une petite question ici: dois-je ajouter la colonne tsvector à mon modèle?) Ma conjecture est que je devrais utiliser extra() pour changer le "où" et "tables" dans le jeu de requête
Peut-être si je modifier la requête à cela, il serait plus facile:
SELECT * FROM client
WHERE plainto_tsquery('famille age') @@ textsearchable_index_col
ORDER BY ts_rank_cd(textsearchable_index_col, plainto_tsquery(text_search)) DESC LIMIT 10
donc id » avoir à faire quelque chose comme:
Client.objects.???.extra(where=[???])
Thxs pour votre aide :) Une autre chose, je suis en utilisant Django 1.1
je l'ai essayé mais il y a une erreur en disant qu'il y a un problème sur la syntaxe de la requête qui est bizarre parce que j'ai pris le qs.query et exécuté directement dans la base de données, et ça fonctionne bien les guillemets simples dans le "plainto_tsquery ('% s')" – pleasedontbelong
http://barryp.org/blog/entries/postgresql-full-text-sear ch-django/en utilisant "extra" – Stefano