2016-04-21 11 views
1

Ich führe eine Site als Azure Web App mit Azure SQL, Azure Search und Azure Blob Storage aus. Der Azure Search-Index (für die Dokumentsuche) wird derzeit mithilfe eines Indexer-Zeichnungsdatensatzes aus mehreren SQL-Tabellen (über eine Ansicht) erstellt, um Berechtigungen und andere Metadaten, die den Dokumenten indirekt zugeordnet sind, einschließlich der URL, dem Dokument zuzuordnen im Azure-Blobspeicher.Hinzufügen von Volltextsuche mit Azure Search, Azure SQL, Azure Blob-Speicher

Das neu veröffentlichte Update für Azure Search scheint die Volltextsuche von Blobs zu ermöglichen, was großartig ist, aber die Datenquelle muss in den Blobspeichercontainer geändert werden, wobei das zusätzliche Meta fehlt, das von my aufgefüllt würde SQL-Ansicht

Kann ein Suchindexdokument mit mehr als einer Datenquelle gefüllt werden oder kann ein zweiter Indexer ein vorhandenes Suchdokument aktualisieren (um dem Dokument die Volltextdaten hinzuzufügen)?

Ich habe versucht, die Daten zu erfassen und den vollständigen Text innerhalb der SQL-Datenbank beim Hochladen von Dokumenten zu erstellen, aber in Azure-Webanwendungen scheint es kein geeigneter Parser zu sein, und Azure SQL Volltextindex tut dies nicht Ich unterstütze keine Word- oder PDF-Dokumente, die ich hauptsächlich hochlade.

Ist es möglich, den Indexer zu ändern, um Azure Blob Storage-Volltextindizierung einzubauen, oder sollte ich nach einem völlig anderen Ansatz suchen?

Antwort

2

Azure-Suchindizes können mit mehreren Indexern oder sogar mit einer Mischung aus Indexer und eigener Indizierung API für Codeaufruf gefüllt werden. (Speziell Indexer verwenden mergeOrUpload Indizierung Aktion.)

Sie müssen nur sicherstellen, dass sowohl SQL und Blob Indexer stimmen auf den Dokumentschlüssel überein, so dass sie die gleichen Dokumente aktualisieren. HTH!

+0

Vielen Dank für Ihre Antwort, es gab mir die Zuversicht, diesen Weg fortzusetzen und ich habe jetzt gemischte Erfolge. – Ben

+0

Ich erstelle einen neuen Indexer mit einem eigenen Index, so dass ich meinen ursprünglichen SQL-Quellindex nicht korrumpieren würde, und als ich das geschafft habe, wurde mir klar, wie wichtig dein zweiter Kommentar bezüglich des Dokumentschlüssels war. Sofern Sie nichts anderes wissen, denke ich, der einzige Dokumentschlüssel, der verwendet werden kann, ist der Dateiname. Dies muss codiert werden, also habe ich den 'base64EncodeKeys': true-Parameter verwendet, aber dieser stimmt nicht immer mit dem vom SQL-Indexer erzeugten codierten Dateinamen überein (normalerweise, wenn es weniger gebräuchliche Zeichen gibt). Auch der Feldname 'Titel', der vom SQL-Indexer generiert wird, wird vom Blob-Indexer mit Null überschrieben. – Ben

+0

1. Bitte senden Sie mir Details darüber, welche Namen nicht übereinstimmen - vielleicht gibt es einige Unterschiede in den Strings (wie ein Schrägstrich)? eugenesh bei der üblichen Microsoft-Domäne. 2. Um ein Überschreiben zu vermeiden, müssen die Felder in Ihrer Blob-Datenquelle und SQL-Datenquelle getrennt sein, mit Ausnahme des Schlüssels. Wenn Ihre Daten ein Feld Titel mit Nullwert enthalten, interpretieren wir es so, als wollten Sie dieses Feld aus dem Index löschen, was ein legitimes Szenario ist. –