2015-03-16 1 views
0

Индексирование внешнего типа контента довольно прямолинейно. Однако мне очень сложно выяснить конкретное состояние сканирования определенного элемента.SharePoint Search + BCS и бессмысленные URL-адреса, не предназначенные для человека

Глядя на «Url View» внутри SharePoint CA, он показывает мне все мои обходные/индексированные элементы. К сожалению, часть url нигде не читается. Итак, я не знаю, где искать свой конкретный предмет.

Пример:

bdc3://adventureworksdbtest/Default/00000000%2D0000%2D0000%2D0000%2D000000000000/418/AdventureworksDB/420?s_id=i0QMAAA==&s_ce=0408808680g000g10204000g0o20003s 

Guid.Empty?
418?
420?
Некоторые кодированные идентификаторы?
(это не BASE64. I0QMAAA == ничего не означает).

Таблица продуктов AdventureWorks имеет идентификатор продукта (int) и имя (строка). В моей модели BDC я сопоставил столбец «Заголовок» в столбце «Имя» продукта для моего объекта Product. См. Ниже ...

<Entity Name="Product" Namespace="Rs.Exp.IndexingConnector.BuiltinDbConnector" Version="1.0.0.1"> 
    <Properties> 
    <Property Name="OriginalName" Type="System.String">[Production].[Product]</Property> 
    <Property Name="EntitySetName" Type="System.String">[Production].[Product]</Property> 
    <Property Name="Title" Type="System.String">Name</Property> 
    </Properties> 
    <Identifiers> 
    <Identifier Name="ProductID" TypeName="System.Int32" /> 
    </Identifiers> 
    <!-- [...] --> 
</Entity> 

Это работает. Однако это не влияет на «индексный URL». Любые намеки? С чем мне жить? Как сделать вы отладить это?

Обновление: DisplayUriField звучит как хорошая вещь для изучения. Хотя все, что я нашел до сих пор, не то, что я ищу. Я не ищу способ предоставить url сам (где бы я вообще связался?) - Я просто хочу, чтобы «сгенерированный URL» был более значимым.

ответ

0

Отвечая на мой собственный вопрос, если кто-то еще задается вопросом, как это работает.

Свойство метода (экземпляра) «DisplayUriField» на самом деле обеспечивает желаемую функциональность. В качестве значения вы можете установить имя TypeDescriptor, который является частью вашей схемы сущности.

Например, если у вас есть TypeDescriptor, как показано ниже (убедитесь, что ваш оператор ЗЕЬЕСТ возвращает столбец в вопросе) ...

<TypeDescriptor Name="Url" TypeName="System.String"> 
    <Properties> 
    <Property Name="ShowInPicker" Type="System.Boolean">false</Property> 
    </Properties> 
</TypeDescriptor> 

... вы можете использовать его в качестве значения для вашего DisplayUriField свойство:

<MethodInstances> 
    <MethodInstance Name="GetAllProducts" Type="Finder" ReturnParameterName="GetAllProducts_Returned" Default="true" DefaultDisplayName="Get All Products"> 
    <Properties> 
     <Property Name="RootFinder" Type="System.String">x</Property> 
     <Property Name="LastModifiedTimeStampField" Type="System.String">ModifiedDate</Property> 
     <Property Name="DisplayUriField" Type="System.String">Url</Property> 
    </Properties> 
    </MethodInstance> 
</MethodInstances> 

Моя база данных Таблица Url столбец содержит URL, как это

Что бы ни было в столбце будет показано в SharePoints Crawl Log ("Url View"). Если ваша колонка («Url») имеет значение NULL и не содержит никакого значения, BDC будет использовать имя по умолчанию для этого конкретного элемента.

Crawl result with DisplayUriField set for some items

Конечно, после всех пользовательских URL чертовски бесполезно. Тем не менее, это позволяет мне выяснить, прошел ли один конкретный элемент (успешно) или нет, потому что я могу связать показанный Url с ProductID, который я не могу использовать с этими bdc3: // urls.

 Смежные вопросы

  • Нет связанных вопросов^_^