Spracheinstellungen für ArcSDE-XML-Spalten in Geodatabases in Oracle

Wenn Sie planen, eine Tabelle mit dem Inhalt einer XML-Spalte abzufragen, prüfen Sie mit SQL*Plus, welcher lexikalische Scanner standardmäßig zur linguistischen Analyse mit Textindizes verwendet wird. Dies ist besonders wichtig, wenn die Spalte XML-Dokumente enthält, die in einer anderen Sprache als der Standardsprache verfasst sind. Wenn in der Tabelle ArcSDE DBTUNE keine benutzerdefinierten Einstellungen angegeben werden, bestimmen die standardmäßigen Textparameter von Oracle, wie Textindizes für ArcSDE-XML-Spalten erstellt werden.

Besitzer der für Textindizes verwendeten Standardobjekte ist der Benutzer "ctxsys". Diese Objekte werden für die Datenbankinstallation erstellt, nicht für einzelne Datenbanken. Die Eigenschaften dieser Objekte basieren auf den bei der Oracle-Installation verwendeten Spracheinstellungen. Informationen zum Festlegen dieser Eigenschaften finden Sie in den Abschnitten zu Systemeinstellungen und Systemparametern in der Oracle Text Reference für Ihre Version der Datenbank.

Die folgenden Oracle-Parameter haben Auswirkungen auf ArcSDE-XML-Spalten: DEFAULT_LEXER, DEFAULT_STOPLIST, DEFAULT_STORAGE, DEFAULT_WORDLIST und DEFAULT_INDEX_MEMORY.

Standardmäßig werden diese Parameter auf die Systemeinstellungen, deren Besitzer der Benutzer "ctxsys" ist, oder auf einen geeigneten Wert festgelegt. Der Parameter DEFAULT_LEXER wird z. B. in der Regel auf die Standardeinstellung CTXSYS.DEFAULT_LEXER festgelegt. Es ist jedoch auch möglich, dass ein Mitarbeiter Ihrer Organisation die Oracle-Installation so konfiguriert hat, dass stattdessen standardmäßig eine benutzerdefinierte Einstellung verwendet wird.

Bei vielen westeuropäischen Sprachen und bei Sprachen, für die kein spezifischer lexikalischer Scanner verfügbar ist, wird für die Einstellung CTXSYS.DEFAULT_LEXER in der Regel der lexikalische Scanner BASIC_LEXER verwendet, und für die Einstellung CTXSYS.DEFAULT_WORDLIST wird in der Regel die Wortliste BASIC_WORDLIST verwendet.

Zur erfolgreichen Indizierung und Suche sind für einige westeuropäische Sprachen bestimmte Wortlisteneinstellungen erforderlich. Wenn Sie beispielsweise die französische Sprache verwenden, müssen Sie sicherstellen, dass die Attribute "stemmer" und "fuzzy_match" für die Einstellung BASIC_WORDLIST auf Französisch festgelegt sind.

Nachdem Sie die aktuellen Texteinstellungen in Oracle überprüft und mit der Oracle Text Reference verglichen haben, können Sie die zur Indizierung Ihrer XML-Dokumente verwendeten Einstellungen anpassen. Hierzu müssen Sie die entsprechenden Einstellungen in Oracle erstellen und dann mit dem ArcSDE-DBTUNE-Parameter XML_IDX_INDEX_TEXT auf diese Parameter verweisen. Beim Erstellen einer XML-Spalte müssen Sie dann das DBTUNE-Schlüsselwort verwenden, das den benutzerdefinierten XML_IDX_INDEX_TEXT-Parameter enthält. Bei ArcIMS-Metadaten-Services können Sie in der entsprechenden ArcXML-Konfigurationsdatei auf einen DBTUNE-Parameter verweisen.

Benutzerdefinierte lexikalische Scanner

Je nachdem, in welcher Sprache Ihre XML-Dokumente verfasst sind und welche Einstellungen bei der Installation von Oracle vorgenommen wurden, ist der Parameter DEFAULT_LEXER möglicherweise nicht auf den für Ihre Situation am besten geeigneten lexikalischen Scanner festgelegt. Damit die XML-Dokumente erfolgreich indiziert werden können, müssen Sie die Einstellung auf den für Ihre Sprache am besten geeigneten lexikalischen Scanner festlegen.

Oracle stellt beispielsweise keinen lexikalischen Scanner für Thai bereit, sodass in diesem Fall die DEFAULT_LEXER-Einstellung auf BASIC_LEXER festgelegt ist. Mit der Einstellung BASIC_LEXER erfolgt die Indizierung und Durchsuchung von Text nur anhand von Leerräumen, was bei einer Sprache wie Thai nicht unbedingt zu optimalen Ergebnissen führt. Wenn Ihre XML-Dokumente UTF-8-kodiert sind, erzielen Sie in diesem Fall mit der Einstellung WORLD_LEXER möglicherweise bessere Ergebnisse (Oracle 10g oder höher). Alle von ArcIMS-Metadaten-Services in einer ArcSDE-XML-Spalte veröffentlichten Dokumente sind UTF-8-kodiert.

Bevor Sie mit dem Erstellen von benutzerdefinierten Einstellungen beginnen, sollten Sie die vom System bereitgestellten Textobjekte durchgehen, um sicherzustellen, dass der lexikalische Scanner, den Sie verwenden möchten, in Ihrer Oracle-Installation verfügbar ist.

Damit diese Einstellung beim Erstellen einer XML-Spalte verwendet wird, stellen Sie sie im DBTUNE-Parameter XML_IDX_INDEX_TEXT ein. Dem Namen der Einstellung muss stets der Name des Benutzers, der die Einstellung erstellt hat, vorangestellt sein. Jeder Benutzer kann von anderen Benutzern erstellte Texteinstellungen verwenden.

Wenn Sie zur Indizierung Ihrer XML-Dokumente die Einstellung BASIC_LEXER verwenden, können Sie einen benutzerdefinierten lexikalischen Scanner erstellen, der beispielsweise nicht alphanumerische Zeichen in ein Wort einschließt. Hierzu verwenden Sie das Attribut "printjoins" der Einstellung BASIC_LEXER. Dies ist nützlich, um beispielsweise die Indizierung und Durchsuchung von Ortsnamen mit Interpunktionszeichen zu standardisieren, wie z. B. "Coeur d'Alene".

Wenn Sie einen benutzerdefinierten lexikalischen Scanner erstellen, indem Sie das Attribut "skipjoin" der Einstellung BASIC_LEXER für das Apostroph verwenden, wird "Couer d'Alene" als "Couer dAlene" indiziert. Und falsch geschriebene Suchangaben, wie z. B. "C'ouer d'Alene", werden ebenfalls als "Couer dAlene" indiziert, wodurch ein besseres Suchergebnis erzielt wird. Sie können beispielsweise eine Texteinstellung wie die folgende erstellen:

begin ctx_ddl.create_preference('BASIC_LEX_SKIP', 'BASIC_LEXER'); 
ctx_ddl.set_attribute('BASIC_LEX_SKIP', 'skipjoins', '''');
end;
/

Ändern Sie die Indizierung der Interpunktion nicht leichtfertig. Dieselbe Einstellung wird für die Indizierung des gesamten Textes in Ihren XML-Dokumenten verwendet. Für die Werte in einem XML-Element wird die Interpunktion möglicherweise anders verwendet als für die Werte in anderen XML-Elementen.

Auch in Fällen, in denen die Einstellung DEFAULT_LEXER zwar richtig auf BASIC_LEXER festgelegt ist, die BASIC_LEXER-Attribute jedoch für Ihre Sprache nicht korrekt sind, kann ein benutzerdefinierter lexikalischer Scanner erforderlich sein. Damit XML-Dokumente richtig indiziert werden, müssen Sie die BASIC_LEXER-Attribute für Indexstämme, die Indizierung zusammengesetzter Wörter, alternative Schreibweisen und die neue deutsche Rechtschreibung entsprechend festlegen. Dies gilt insbesondere für westeuropäische Sprachen. Überprüfen Sie zunächst die Werte dieser Attribute für Ihre Sprache in der Oracle Text Reference, erstellen Sie dann wie im oben stehenden Beispiel gezeigt einen benutzerdefinierten lexikalischen Scanner, und verweisen Sie mit dem DBTUNE-Parameter XML_IDX_INDEX_TEXT darauf.

Benutzerdefinierte Wortliste/Stoppliste

Je nachdem, in welcher Sprache Ihre XML-Dokumente verfasst sind und welche Einstellungen bei der Installation von Oracle vorgenommen wurden, sind die Parameter DEFAULT_WORDLIST und DEFAULT_STOPLIST möglicherweise für Ihre Sprache nicht richtig konfiguriert.

Damit die XML-Dokumente erfolgreich durchsucht werden können, müssen Sie die für Ihre Sprache geeignete Wortlisteneinstellung verwenden. Dies ist besonders wichtig für westeuropäische Sprachen, bei denen der Parameter BASIC_WORDLIST die richtige Spracheinstellung für die Attribute "stemmer" und "fuzzy_match" aufweisen muss.

Mit der Stopplisteneinstellung wird gesteuert, welche Wörter in den XML-Dokumenten nicht indiziert und somit bei Suchvorgängen nicht berücksichtigt werden. Stopplisten sind für mehrere Sprachen verfügbar. Falls erforderlich, können Sie die Stopplisten auch anpassen.

Überprüfen Sie zunächst die Werte dieser Einstellung für Ihre Sprache in der Oracle Text Reference, erstellen Sie dann eine benutzerdefinierte Einstellung, und verweisen Sie mit dem DBTUNE-Parameter XML_IDX_INDEX_TEXT darauf.

Verwandte Themen


7/10/2012