2010-12-02 18 views
0

J'avais créé une requête xml que j'envoyais à mon service de recherche de sharepoint qui renvoyait des résultats. J'ai ensuite sorti le texte de requête SQL et commencé à l'utiliser avec le modèle d'objet et maintenant ça ne fonctionne pas. Est-ce que j'ai l'impression de faire quelque chose de mal en fonction du code ci-dessous?Modèle d'objet Sharepoint vs WebServices

XML Query (résultats retours):

<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> 

code modèle d'objet (ne fonctionne pas):

 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(); 

Répondre

2

Vous devez au moins ajouter:

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

au moins faire une comparaison équitable entre les deux méthodes. Ensuite, vous pouvez également essayer:

ftq.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery;