2010-12-09 16 views
0

J'ai besoin de stocker quelques centaines de milliers de documents HTML dans une base de données et de pouvoir les rechercher. Mais pas seulement pour le contenu - j'ai besoin que les recherches correspondent aux noms de classe, aux noms de script et aux valeurs d'id (entre autres choses) qui pourraient apparaître comme des attributs dans les balises HTML des documents. J'ai essayé d'utiliser to_tsvector ('english', tableColumn) et to_tsvector ('simple', tableColumn) mais aucun ne semble correspondre au contenu des attributs dans les balises. Plus précisément, je l'ai fait:Index de texte intégral dans PostgreSQL (pas 'anglais' ou 'simple')?

create index an_index on myTable using gin (to_tsvector('simple',tableColumn)) 

puis:

select url from myTable where to_tsvector ('simple', tableContent) @@ to_tsquery ('myscript.js') 

Je m'y attendais pour récupérer tous les documents qui contenaient une référence à MyScript.js. Mais il ne renvoie aucun résultat.

Est-il possible d'obtenir les résultats souhaités en utilisant la recherche en texte intégral?

Merci d'avance pour votre aide.

+0

Avez-vous regardé dans myTable pour voir comment la recherche en texte intégral indexe vos données? A quelle distance de votre 'myscript.js' es-tu? Si le contenu est mal segmenté, vous devrez régler l'analyseur. –

Répondre

1

Essayez à la place.

SELECT url FROM myTable WHERE tableColumn @@ to_tsquery ('simple','myscript.js') 
+0

et à défaut de changer to_tsquery à plainto_tsquery. –