2010-12-02 2 views
0

Я создал запрос xml, который я отправлял в службу поиска sharepoint, которая возвращала некоторые результаты. Затем я вытащил текст запроса SQL и начал использовать его с объектной моделью, и теперь он не работает. Похоже, я делаю что-то неправильно на основе кода ниже?Sharepoint Object Model vs WebServices

Запрос XML (возвращает результаты):

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

модель объекта код (не):

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

ответ

2

Вам нужно по крайней мере, добавить:

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

по крайней наименее справедливого сравнения между этими двумя методами. Затем вы также можете попробовать:

ftq.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery; 
Смежные вопросы