2009-08-10 11 views
3

Voici ce que j'essaie de faire. Utilisateur (a): Entre les données dans deux champs (description-1) et (description-2). Utilisateur (b) Entre des données similaires dans des champs opposés.Requête SQLite - Besoin d'aide pour la recherche plein texte

La recherche de l'utilisateur (a) ou (b) sur les deux champs trouverait une correspondance.

Une bonne analogie serait une recherche de datation. L'utilisateur (a) entre une description d'eux-mêmes et la correspondance qu'ils recherchent, et l'utilisateur (b) entre une description d'eux-mêmes et la correspondance qu'ils recherchent et les deux seraient en mesure de faire une recherche et de trouver une correspondance.

donc dans la requête ... psuedo anglais

Sélectionnez le nom à partir de données où me « cible » = et target = « me »

Le hic serait, quelques-uns des mots dans le champ sélectionnne , mais pas tout.

+0

L'information est entré sous forme libre ou est le re toute structure à cela? –

+0

Les données sont saisies en libre forme par l'utilisateur. Existe-t-il des alternatives si les données sont structurées? – Jordan

+0

@Jordan bien, toute structure le rendrait plus facile, presque par définition. –

Répondre

5

Ce type d'adaptation est difficile quelle que soit la technologie utilisée. Vous avez peut-être mordu plus que vous ne pouvez mâcher. Je vous recommande de lire les types de données Text Search dans PostgreSQL. PostgreSQL offre une solution flexible et puissante pour la recherche en texte intégral, et peut faire ce dont vous avez besoin, contrairement à SQLite.

En utilisant PostgreSQL tsquery et tsvectordata types, vous pourriez transformer la description d'un utilisateur sous une forme qui interroge la description d'un autre utilisateur. Tsquery et tsvector peuvent être générés dynamiquement ou enregistrés dans des colonnes de base de données et indexés.

Si vous avez encore besoin d'utiliser SQLite, vous devez vous renseigner sur les divers types de tables virtuelles FTS. Ceux-ci sont tous expérimentaux et ne sont pas activés par défaut. Vous devez donc recompiler SQLite, en activant FTS1, FTS2 ou FTS3.

La documentation de ces fonctionnalités est assez limitée. Voici tout ce que j'ai trouvé:

Questions connexes