Die Volltextsuche in SQL Anywhere wird mithilfe eines Textindexes durchgeführt. Jeder Wert in einer Spalte, für die ein Textindex erstellt wurde, wird als ein Dokument bezeichnet. Wenn ein Textindex erstellt wurde, wird jedes Dokument von einem integrierten, in der Textkonfiguration für den Textindex angegebenen Begriffsegmentierer verarbeitet, um die im Dokument enthaltenen Begriffe (auch als Token bezeichnet) und der Position der Begriffe im Dokument zu ermitteln. Der integrierte Begriffsegmentierer wird auch dazu verwendet, die Begriffe für die Dokumente (Textkomponenten) einer Abfragezeichenfolge zu segmentieren. Beispiel: Die Abfragezeichenfolge 'rain or shine' besteht aus zwei Dokumenten, 'rain' und 'shine', verbunden durch den Operator OR. Außerdem wird der integrierte, in der Textkonfiguration angegebene Begriffsegmentierer-Algorithmus verwendet, um die Stoppliste in Begriffe zu segmentieren und um die Eingabe der sa_char_terms-Systemprozedur in Begriffe zu segmentieren.
Abhängig von den Anforderungen Ihrer Anwendung stellen Sie möglicherweise fest, dass einige Verhaltensweisen des integrierten GENERIC-Begriffsegmentierers unerwünschte oder einschränkende Auswirkungen haben und dass NGRAM-Begriffsegmentierer für die Anforderungen der Anwendung nicht geeignet sind. Beispielsweise bietet der integrierte GENERIC-Begriffsegmentierer keine sprachspezifische Begriffsegmentierung. Im Folgenden finden Sie einige Gründe, die dafür sprechen, einen benutzerdefinierten Begriffsegmentierer zu implementieren:
Keine sprachspezifische Begriffsegmentierung Linguistische Regeln in Bezug darauf, was einen Begriff darstellt, unterscheiden sich je nach Sprache. Aus diesem Grund sind auch Begriffsegmentierregeln von Sprache zu Sprache verschieden. Die integrierten Begriffsegmentierer bieten keine sprachspezifischen Begriffsegmentierregeln.
Umgang mit Wörtern mit Apostroph Das Wort "they'll" wird vom integrierten GENERIC-Begriffsegmentierer als "they ll" behandelt. Sie können jedoch einen benutzerdefinierten GENERIC-Begriffsegmentierer konfigurieren, der den Apostroph als Teil des Worts behandelt.
Keine Unterstützung für die Ersetzung von Begriffen Sie können nicht festlegen, durch welche anderen Begriffe ein Begriff ersetzt werden soll. Beispielsweise bei der Indizierung des Worts "they' ll" ist es möglicherweise angebracht, diese als zwei Begriffe zu speichern: "they" und "will". Auf ähnliche Weise kann es sinnvoll sein, die Ersetzung von Begriffen zu verwenden, um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung in einer Datenbank durchzuführen, in der die Groß- und Kleinschreibung berücksichtigt wird.
In SQL Anywhere können Sie außerdem externe Vorfilterbibliotheken für die Durchführung von Vorfilterungen an Daten vor ihrer Indizierung verwenden. Das Vorfiltern erlaubt Ihnen, ausschließlich den zu indizierenden Textinhalt eines Dokuments zu extrahieren. Beispiel: Angenommen Sie möchten einen Textindex für eine Spalte mit XML-Werten erstellen. Mit einem Vorfilter können Sie die XML-Tags herausfiltern, damit diese nicht gemeinsam mit dem Inhalt indiziert werden.
SQL Anywhere stellt eine API bereit, die Sie verwenden können, um auf benutzerdefinierte Vorfilter und Begriffsegmentierer-Bibliotheken bzw. auf Bibliotheken von Drittherstellern zuzugreifen, wenn Sie Volltextindizes erstellen und aktualisieren. Das bedeutet, Sie können externe Bibliotheken verwenden, um bei Dokumentformaten wie XML, PDF und Word unerwünschte Begriffe und Inhalte vor der Indizierung des Inhalts zu entfernen.
In Ihrem Beispielverzeichnis (Samples) werden einige Beispielvorfilter- und Begriffsegmentierer-Bibliotheken bereitgestellt, die Sie bei der Konfiguration eigener Bibliotheken unterstützen. Sie können aber auch die API verwenden, um auf Bibliotheken von Drittherstellern zuzugreifen. Wenn Microsoft Office auf dem System installiert ist, auf dem der Datenbankserver ausgeführt wird, sind IFilters for Office-Dokumente, wie z.B. Word und Excel, verfügbar. Wenn auf dem Server Acrobat Reader installiert ist, dann steht wahrscheinlich ein PDF IFilter zur Verfügung.
Externe NGRAM-Begriffsegmentierer werden nicht unterstützt.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |