SharePoint 2010 & Suche: FullTextSqlQuery mit PowerShell testen

Die Klasse FullTextSqlQuery kann zur Abfrage von SharePoint-Inhalten in einer SharePoint-Komponente (WebPart, FeatureReceiver, Job,…) genutzt werden. Da Fehlerausgaben teilweise recht schwammig sind (ala “An error occured… sender did not specify a reason.”), ergibt sich oft die Frage, wie man die gleiche Such-Abfrage einfach nachstellen kann.

Genau für dieses Fälle (also das Testen oder Nachstellen von Such-Anfragen in Form von Full-Text-Sql-Queries) nutze ich ein PowerShell-Skript, welches auf einem SharePoint-Server ausgeführt werden kann. Als Eingabe wird ein Query-String eingelesen. Das Resultat wird dann direkt auf der PowerShell-Konsole ausgegeben.

Hinweis: Es gibt auch ein paar Codeplex-Projekte, welche sich dem Theme widmen und GUIs hierfür entwickelt haben (vgl. “Search Community Toolkit“). Ich finde diese auch wunderbar, um bspw. die Managed-Search-Properties zu finden, welche ich für den Select-Part einer Search-Query verwenden kann, allerdings habe ich mit den Tools nie Ergebnisse gesehen. Deshalb die Lösung mit dem PowerShell-Skript.

Die Lösung mit dem PowerShell-Skript funktioniert wie folgt:

  1. PowerShell mit SharePoint-Modulen öffnen
  2. PowerShell-Skript aufrufen
  3. Full-Text-Sql-Query eingeben (Syntax s. “SharePoint Search SQL Syntax Reference“)
  4. Resultat ansehen
Mit Hilfe des PowerShell-Skriptes könnten Full-Text-Sql-Queries auf einem SharePoint-Server getestet werden.

FullTextSqlQuery mit dem PowerShell-Skript testen

Und hier noch das PowerShell-Skript (ala Steve P):

$q = read-host “Enter query-text”
$site = get-spsite “http://<YourWebApp-Url>
$kq = new-object Microsoft.Office.Server.Search.Query.FullTextSqlQuery($site)
$kq.ResultTypes= [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults
$kq.RankingModelId = “D9BFB1A1-9036-4627-83B2-BBD9983AC8A1″
$kq.QueryText = $q
$res = $kq.Execute()
$table = new-object System.Data.DataTable
$table.Load($res[$kq.ResultTypes],[System.Data.LoadOption]::OverwriteChanges)
echo $table

Sicherlich kann man das Skript noch erweitern, um bspw. die WebApp-Url als Eingabeparameter abzufragen, das Limiteren der Anzahl der Ergebniss oder das Highlighten bestimmter Ergebnis-Bestandteile (vgl. PowerShell auf Poshcode)… hier sind keine Grenzen gesetzt.

Viel Spaß beim Suchen!

 

Dieser Beitrag wurde unter Microsoft, SharePoint 2010 abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf SharePoint 2010 & Suche: FullTextSqlQuery mit PowerShell testen

  1. Axel sagt:

    Habe gerade bemerkt, dass beim Kopieren des obigen PowerShells darauf geachtet werden muss, dass die doppelten Anführungszeichen angepasst werden müssen.

    Und noch ein Beispiel-Abfrage, weil ich mir die immer wieder selbst suche… ;-)

    SELECT AccountName FROM Scope() WHERE “Scope”=’People’ ORDER BY AccountName

    Und noch der Hinwes, dass die Anzahl der Rückgabewerte einen Default-Wert (50) besitzt. Dieser kann über das Property “kq.RowLimit=xyz” hochgesetzt werden.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>