Comment puis-je creer un index sur une colonne NVarchar2 ?
J'utilise le Context Index pour indexer des documents html, xml, etc.
Merci d'avance
Version imprimable
Comment puis-je creer un index sur une colonne NVarchar2 ?
J'utilise le Context Index pour indexer des documents html, xml, etc.
Merci d'avance
Cela semble impossible en 9i, 10g et même 11g. D'après:
http://download.oracle.com/docs/cd/B...ql.htm#i997677
Citation:
The column that you specify must be one of the following types: CHAR, VARCHAR, VARCHAR2, BLOB, CLOB, BFILE, XMLType, or URIType.
Oui, merci bcp. Il faut donc convertir en clob.
Mon probleme est que je dois indexer 3 colonnes:
- Titre en 4 langues (francais, espagnole, arabe et anglais)
- Organisateur en 4 langues
Donc je dois indexer les 8 colonnes:
- TitreFR, TitreAN, TitreAR, TitreSP
- OrganisateurFR, OrganisateurAN, OrganisateurAR, OrganisateurSP
Je suis en train d'utiliser le Context Index puisque je veux indexer le contenu html. Est-ce que je dois ajoute un Contains clause pour chaque colonne? et comment je dois specifier les scores ?
Est-ce que je dois creer unt table temporaire, calculer les weights et score?Code:
1
2
3
4
5 select * from table where contains(titreFR, searchstring, 1) > 0 OR contains(titreAN, searchstring, 1) > 0 OR etc...
Je veux uniquement le plan pour resoudre mon probleme!
tu n'aurais pas eu ce problème si plutôt que le titre tu utilisais un code :?
Une table de traduction avec (ID,LANGUE,TEXT) et comme ça dans ton modèle tu peux indexer un INTEGER : l'ID ;)
J'ai pas bien compris. J'ai utilise un Lexer (world lexer)..
Qu'est-ce que je dois faire maintenant ?
J'ai cree un lexer et un index pour chaque titre (4 langues) et pour chauqe organisateur.
Moi ce que je fais c'est une table de traduction : ID, LANGUE, TEXT
Et dans ta table je remplace TitreFR, TitreAN, TitreAR, TitreSP par Titre et au lieu de mettre Voiture, Cars, etc... je mets le code correspondant dans la table de traduction avec une clé étrangère entre les tables.
oui je sais, mais ce n'est pas le cas ici pour des raisons particulieres.
est-ce que je dois utiliser un datastore ? quelle est la solution ?
Le "N" de NVARCHAR2 signifie qu'on utilise le NATIONAL CHARACTER SET, il n'y a pas de restriction sur les index. On peut créer un index sur NVARCHAR2, et aussi NCHAR et NCLOB (vous m'avez fait douté, j'ai fais le test).
Par contre Si le NATIONAL CHARCTER SET est AL16UTF16 les fonctions LIKE sont à remplacer par LIKEC etc.. mais c'est un autre problème
Est-ce que tu as essaye de creer un context index sur nvarchar2? ca ne marche pas chez moi and it is not supported
Quel type d'index vous avez utilise ?
Effectivement pas un index de type CONTEXT. :oops:
Quel est ton CHARACTER SET et ton NATIONAL CHARACTER SET ?
NLS_NCHAR_CHARACTERSET: AL16UTF16
'NLS_CHARACTERSET' AR8MSWIN1256
Avec du retard, j'ai fais un crash test vélo-voiture, la voiture a gagné :cry:, mon vélo est cassé.
Si l'index est vraiment nécessaire, il faut mettre ta base en character set AL32UTF8.
Merci bcp Laurent:) prends soin de toi et de ton velo! ;)