SharePoint 搜索 + BCS 和无意义的非人类可读的 url

SharePoint Search + BCS and meaningless non-human-readable urls

索引外部内容类型非常简单。 但是我觉得弄清楚某个特定项目的具体"crawl state"非常麻烦。

查看 SharePoint CA 中的 "Url View",它显示了我所有的 crawled/indexed 项目。 不幸的是,url 部分几乎不可读。 所以我不知道在哪里可以找到我的特定项目。

示例:

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

Guid.Empty?
418?
420?
一些编码的 id?
(它不是 BASE64。i0QMAAA== 转换为空)。

AdventureWorks 产品 table 有一个产品 ID(整数)和一个名称(字符串)。在我的 BDC 模型中,我将 "Title" 列映射到产品实体的产品 "Name" 列。见下文...

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

行得通。但是它对 "index url" 没有影响。有什么提示吗?我必须忍受的东西? 如何调试这个?

更新: DisplayUriField 听起来是个值得研究的好东西。尽管到目前为止我发现的并不是我想要的。我不是在寻找一种方法来自己提供 url(无论如何我 link 会去哪里?!)- 我只是希望 "generated url" 更有意义。

回答我自己的问题,以防其他人想知道这是如何工作的。

方法(实例)属性“DisplayUriField”实际上提供了所需的功能。作为一个值,您可以设置作为实体模式一部分的 TypeDescriptor 的名称。

例如,如果您有如下所示的 TypeDescriptor(确保您的 SELECT 语句 returns 有问题的列)...

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

我的数据库 Table Url 列包含 url 个这样的

您的专栏中的任何内容都将显示在 SharePoints 爬网日志 ("Url View") 中。 如果您的列 ("Url") 可以为空且不包含任何值,BDC 将为该特定项目使用默认名称。

当然,毕竟自定义 url 实在太他妈没用了。但是,它允许我弄清楚某个特定项目是否已被(成功)抓取,因为我可以将显示的 Url 与 ProductID 相关联——而我不能使用那些 bdc3:// urls。