Modèle Object Sharepoint vs Web Services
-
30-09-2019 - |
Question
J'avais créé une requête xml que j'envoyais à mon service de recherche de sharepoint qui retournait des résultats. Je me suis alors tiré le texte de la requête SQL sur elle et a commencé à l'utiliser avec le modèle objet et maintenant il ne fonctionne pas. Est-ce que ça ressemble que je fais quelque chose de mal basé sur le code ci-dessous?
XML Query (renvoie les résultats):
<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 de 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();
La solution
Vous avez besoin au moins d'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 aussi essayer:
ftq.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow