Первоначально я полагал, что эти 3 делают более или менее одну и ту же вещь, только с другой системой обозначений. До недавнего времени, когда я заметил, что между ними существует большая разница между результатами KeyWordQuery / FullTextQuerySearch и веб-службы Query.
Я использовал метод KeywordQuery и метод FullText для поиска значения XYZ customColumn со значением (ASDSADA-21312ASD-ASDASD): -
Когда я запускаю этот запрос как: - FullTextSqlQuery: -
FullTextSqlQuery myQuery = new FullTextSqlQuery(site);
{
// Construct query text
String queryText = "Select title, path, author, isdocument from scope() where freetext('ASDSADA-21312ASD-ASDASD') ";
myQuery.QueryText = queryText;
myQuery.ResultTypes = ResultType.RelevantResults;
};
// execute the query and load the results into a datatable
ResultTableCollection queryResults = myQuery.Execute();
ResultTable resultTable = queryResults[ResultType.RelevantResults];
// Load table with results
DataTable queryDataTable = new DataTable();
queryDataTable.Load(resultTable, LoadOption.OverwriteChanges);
Я получаю следующий результат, представляющий документ.
* Title: TestPDF
* path: http://SharepointServer/Shared Documents/Forms/DispForm.aspx?ID=94
* author: null
* isDocument: false
Запомните поля Path и isDocument в приведенном выше результате.
Метод веб-службы
Затем я попробовал метод запроса веб-службы. Я использовал инструмент службы поиска Sharepoint, доступный по номеру http://sharepointsearchserv.codeplex.com/, и выполнил тот же запрос, т. Е. Выберите заголовок, путь, автора, документ из области видимости () где свободный текст ('ASDSADA-21312ASD-ASDASD'). На этот раз я получил следующие результаты: -
* Title: TestPDF
* path: http://SharepointServer/Shared Documents/TestPDF.pdf
* author: null
* isDocument: true
Снова обратите внимание на путь. Хотя результаты поиска по 2-му методу полезны, поскольку они точно указывают мне путь к файлу, я не могу понять, почему метод 1 не дает мне те же результаты?
Почему существует расхождение между двумя результатами?