Paramètres linguistiques des colonnes XML ArcSDE dans les géodatabases Oracle
Si vous envisagez d'interroger une table avec du contenu d'une colonne XML, vérifiez que le lexer par défaut utilisé pour l'analyse linguistique avec les index de texte fait appel à SQL*Plus. Ce point est particulièrement important lorsque la colonne contient des documents XML comprenant du texte écrit dans une langue autre que l'anglais. Si aucun paramètre personnalisé n'est défini pour la table ArcSDE DBTUNE, ce sont les paramètres de texte Oracle par défaut qui déterminent la manière dont les index de texte sont créés pour les colonnes XML ArcSDE.
Les objets par défaut des index de texte appartiennent à l'utilisateur ctxsys et sont créés pour l'installation de la base de données et non pour des bases de données individuelles. Leurs propriétés sont basées sur les paramètres linguistiques utilisés lors de l'installation d'Oracle ; reportez-vous aux rubriques concernant les préférences définies par le système et les paramètres système dans le document Oracle Text Reference correspondant à votre version de la base de données, pour savoir comment ces propriétés sont définies.
Les paramètres Oracle qui affectent les colonnes XML ArcSDE sont DEFAULT_LEXER, DEFAULT_STOPLIST, DEFAULT_STORAGE, DEFAULT_WORDLIST et DEFAULT_INDEX_MEMORY.
Par défaut, ces paramètres sont généralement réglés sur les préférences définies par le système portant le même nom que celles de l'utilisateur ctxsys ou sur une valeur appropriée. Par exemple, le paramètre DEFAULT_LEXER est généralement défini sur la préférence CTXSYS.DEFAULT_LEXER. Cependant, il est possible qu'une autre personne de votre organisation ait préalablement configuré Oracle pour utiliser par défaut une autre préférence personnalisée.
Pour de nombreuses langues occidentales et les langues pour lesquelles aucun lexer spécifique n'est fourni, la préférence CTXSYS.DEFAULT_LEXER utilise généralement le lexer BASIC_LEXER ; la préférence CTXSYS.DEFAULT_WORDLIST utilise fréquemment la liste de mots BASIC_WORDLIST.
Pour pouvoir indexer et effectuer une recherche dans certaines langues d'Europe occidentale, certains paramètres de liste de mots spécifiques sont nécessaires. Si votre langue est le français, vous devez vous assurer que les attributs stemmer (racinisateur) et fuzzy_match (correspondance partielle) de la préférence BASIC_WORDLIST sont définis sur français, par exemple.
Après avoir vérifié les paramètres de texte actifs dans Oracle et consulté le manuel Oracle Text Reference, vous pouvez, si vous le souhaitez, personnaliser les paramètres utilisés pour indexer vos documents XML. Cette opération nécessite la création de préférences appropriées dans Oracle, puis le référencement de ces paramètres avec le paramètre ArcSDE DBTUNE XML_IDX_INDEX_TEXT. Utilisez ensuite le mot-clé DBTUNE contenant le paramètre XML_IDX_INDEX_TEXT personnalisé lors de la création d'une colonne XML. Pour un service de métadonnées ArcIMS, vous pouvez référencer un paramètre DBTUNE dans son fichier de configuration ArcXML.
Lexers personnalisés
Selon la langue de vos documents XML et les paramètres configurés lors de l'installation d'Oracle, il se peut que le paramètre DEFAULT_LEXER ne soit pas défini sur le lexer le plus approprié à la situation. Pour pouvoir indexer correctement des documents XML, vous devez définir une préférence de lexer appropriée à votre langue.
Par exemple, si votre langue de travail est le thaïlandais, Oracle ne fournit pas de lexer thaïlandais et la préférence DEFAULT_LEXER peut alors être définie afin d'utiliser le lexer BASIC_LEXER. La préférence BASIC_LEXER indexe et effectue une recherche dans le texte à l'aide d'espaces blanc uniquement, ce qui n'est pas forcément l'idéal avec une langue telle que le thaïlandais. Si vos documents XML sont codés en UTF-8, vous pouvez obtenir de meilleurs résultats à l'aide de la préférence WORLD_LEXER, si vous utilisez Oracle 10g ou une version plus récente. Tous les documents XML publiés dans une colonne XML d'ArcSDE par les services de métadonnées ArcIMS sont codés en UTF-8.
Il est parfois utile de vérifier les objets de texte fournis par le système avant de créer des préférences personnalisées, par exemple, pour s'assurer que le lexer à utiliser est disponible avec votre installation Oracle.
Vous utiliserez cette préférence lors de la création d'une colonne XML, en définissant la préférence pour celle-ci dans le paramètre XML_IDX_INDEX_TEXT DBTUNE. Faites toujours précéder le nom de préférence du nom de l'utilisateur qui a créé la préférence. Tout utilisateur peut utiliser une préférence de texte créée par un autre utilisateur.
Si vous pouvez utiliser la préférence BASIC_LEXER pour indexer vos documents XML, il peut être judicieux de créer un lexer personnalisé afin de fusionner du texte comprenant des caractères non alphanumériques en un seul mot, par exemple. Cette opération s'effectue à l'aide de l'attribut printjoins de la préférence BASIC_LEXER et permet de standardiser l'indexation et la recherche de noms de lieux utilisant des signes de ponctuation, comme Cœur d'Alene.
La création d'un lexer personnalisé à l'aide de l'attribut skipjoin de la préférence BASIC_LEXER avec l'apostrophe permet d'indexer Cœur d'Alene sous la forme Cœur dAlene. En outre, toute faute d'orthographe sur ce nom de lieu, comme l'ajout d'apostrophes (C'œur d'Alene) est également indexée sous Cœur dAlene, ce qui permet d'obtenir de meilleurs résultats de recherche. Vous pouvez créer une telle préférence de texte comme suit :
begin ctx_ddl.create_preference('BASIC_LEX_SKIP', 'BASIC_LEXER');
ctx_ddl.set_attribute('BASIC_LEX_SKIP', 'skipjoins', '''');
end;
/
Modifiez le mode d'indexation de la ponctuation avec précaution. La même préférence est utilisée lors de l'indexation de l'ensemble du texte de vos documents XML. Les valeurs d'un élément XML peuvent utiliser la ponctuation différemment des autres.
Une préférence de lexer personnalisée peut également s'avérer nécessaire dans les cas où la préférence DEFAULT_LEXER est correctement définie pour utiliser le BASIC_LEXER, mais sans que les attributs du BASIC_LEXER soient correctement définis dans votre langue. Vous devez définir correctement les attributs BASIC_LEXER des racines d'index, de l'indexation par mot-clé composite, de l'orthographe alternative et de la nouvelle orthographe allemande en fonction de votre langue pour une indexation correcte des documents XML. Ce point est particulièrement important pour les langues d'Europe occidentale. Après avoir vérifié les valeurs appropriées pour ces attributs pour votre langue dans le manuel Oracle Text Reference, créez une préférence de lexer personnalisée comme dans l'exemple ci-dessus, puis référencez-la dans le paramètre XML_IDX_INDEX_TEXT DBTUNE.
Liste de mots ou liste d'exclusion personnalisée
Selon la langue de vos documents XML et les paramètres configurés lors de l'installation d'Oracle, il se peut que les préférences DEFAULT_WORDLIST et DEFAULT_STOPLIST ne soient pas correctement définies en pour votre langue.
Pour pouvoir effectuer une recherche correcte dans des documents XML, vous devez définir une préférence de liste de mots appropriée à votre langue. Cette opération est particulièrement importante pour les langues d'Europe occidentale, pour lesquelles la préférence BASIC_WORDLIST doit présenter la langue correcte pour pouvoir effectuer la racinisation et la correspondance partielle.
La préférence de liste d'exclusion définit les mots des documents XML non indexés et, par conséquent, non disponibles lors de la recherche. Les listes d'exclusion sont disponibles pour plusieurs langues. Vous pouvez également personnaliser les listes d'exclusion si cette opération s'avère appropriée à votre situation.
Après avoir vérifié les valeurs appropriées de ces paramètres pour votre langue dans le manuel Oracle Text Reference, créez une préférence personnalisée, puis ajoutez-la à la valeur du paramètre XML_IDX_INDEX_TEXT DBTUNE.