2010-12-02 11 views
0

Ich hatte eine XML-Abfrage erstellt, die ich an meinen Sharepoint-Suchdienst gesendet hatte, der einige Ergebnisse zurückgab. Ich zog dann den SQL-Abfragetext heraus und begann, ihn mit dem Objektmodell zu verwenden, und jetzt funktioniert es nicht. Sieht es so aus, als würde ich aufgrund des unten stehenden Codes etwas falsch machen?Sharepoint Object Model vs WebServices

Abfrage XML (liefert Ergebnisse):

<QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000"> 
            <Query domain="QDomain"> 
            <SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats> 
            <Context> 
             <QueryText language="en-US" type="MSSQLFT"><![CDATA[ SELECT Title, Rank, owsPublished1,owsSocialx0020Networkx0020Update, Description, Write, Path FROM scope() ORDER BY "Rank" DESC ]]></QueryText> 
            </Context> 
            <Range><StartAt>1</StartAt><Count>20</Count></Range> 
            <EnableStemming>false</EnableStemming> 
            <TrimDuplicates>true</TrimDuplicates> 
            <IgnoreAllNoiseQuery>true</IgnoreAllNoiseQuery> 
            <ImplicitAndBehavior>true</ImplicitAndBehavior>  <IncludeRelevanceResults>true</IncludeRelevanceResults>        <IncludeSpecialTermResults>true</IncludeSpecialTermResults>       
<IncludeHighConfidenceResults>true</IncludeHighConfidenceResults> 
            </Query></QueryPacket> 

Object Model Code (nicht):

 SPSite site = new SPSite("http://sp-dev/"); 
     ServerContext sc = ServerContext.GetContext(site); 
     FullTextSqlQuery ftq = new FullTextSqlQuery(sc); 
     string querySQL = @"SELECT Title, Rank, owsPublished1,owsSocialx0020Networkx0020Update, Description, Write, Path FROM scope() ORDER BY ""Rank"" DESC "; 

     ftq.QueryText = querySQL;; 
     ResultTableCollection results = ftq.Execute(); 

Antwort

2

Sie müssen mindestens hinzufügen:

ftq.EnableStemming = false; 
ftq.TrimDuplicates = true; 
ftq.IgnoreAllNoiseQuery = true; 
ftq.KeywordInclusion = KeywordInclusion.AllKeywords; 

zumin zumindest einen fairen Vergleich zwischen den beiden Methoden. Dann können Sie auch versuchen:

ftq.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery; 
Verwandte Themen