Уникальный идентификатор документа Sharepoint при сканировании с использованием SiteData Webservice - PullRequest
3 голосов
/ 16 сентября 2009

Кто-нибудь знает, как я могу сопоставить свойство «UniqueID» с управляемым свойством, чтобы отображать его в результатах расширенного поиска? Это свойство не отображается, когда я пытаюсь создать новое управляемое свойство, используя ссылку Сопоставления свойств метаданных в администрировании общих служб.

С помощью веб-службы SiteData или Lists я вижу свойство "ows_UniqueId", а с помощью объектной модели я могу получить доступ к свойству SPListItem.UniqueID, но не могу найти способ сопоставить это с просканированным / управляемая собственность.

Ответы [ 2 ]

0 голосов
/ 12 октября 2010

Это довольно болезненно и, вероятно, не поддерживается, но вот что вам нужно сделать, чтобы сделать UniqueId свойство для обхода / сопоставленное свойство таким образом, чтобы его можно было включить в результаты расширенного поиска ...

Во-первых, вам нужно внутренне изменить поле UniqueId в списках, которые вы хотите искать, чтобы оно больше не было скрытым и могло быть проиндексировано сканером. Вот пример кода модели объекта:

// this is the identifier for UniqueId
Guid g = new Guid("4b7403de8d9443e89f0f137a3e298126");
// we will need these for reflection in a bit
BindingFlags bf = BindingFlags.NonPublic | BindingFlags.Instance;
using (SPSite s = new SPSite("http://SharePoint/")) {
  // grab the list that contains what you want indexed
  // and the UniqueId field from that list
  SPList l = s.RootWeb.Lists["Your Custom List/Library"];
  SPField f = l.Fields[g];
  // We need to call the private method SetFieldBoolValue
  // to allow us to change the Hidden property to false
  MethodInfo mi = f.GetType().GetMethod("SetFieldBoolValue", bf);
  mi.Invoke(f, new object[] { "CanToggleHidden", true });
  f.Hidden = false;
  f.Update();
}

После того, как этот код был запущен (и для всех списков / библиотек, которые вы хотите охватить), вам нужно выполнить три шага в администрировании поиска общих служб:

  • Выполнить полный обход.
  • После завершения полного обхода перейдите к категориям свойств для обхода (обычно / ssp / admin / _layouts / schema.aspx? ConsoleView = crawledPropertiesView на вашем сервере) и убедитесь, что существует свойство с именем ows_UniqueId. Затем вам нужно создать управляемое свойство с именем UniqueId, которое сопоставляется с ows_UniqueId.
  • Выполните еще один полный обход.

После завершения второго полного обхода данные должны быть заполнены в индексе, содержащем уникальный идентификатор. Вы можете открыть его в расширенном поиске, изменив основные результаты поиска:

  • Открыть веб-часть для редактирования
  • Развернуть «Параметры запроса результатов»
  • Изменить XML для выбранных столбцов, чтобы включить ссылку на UniqueId
  • Измените XSL для свойств представления данных, чтобы включить оператор для вывода уникального идентификатора
  • Нажмите OK, и при необходимости опубликуйте страницу
0 голосов
/ 16 сентября 2009

Уже должно быть проиндексировано. Вы пробовали использовать objectid? Это отображается как отображение на SharePoint:objectid(Text). Это выглядит ближе всего к тому, что вы ищете.

...