SharePoint Search + BCS和无意义的非人类可读网址

时间:2015-03-16 14:31:47

标签: search sharepoint sharepoint-2013 external

索引外部内容类型非常简单。 但是我发现找出特定项目的特定“爬行状态”非常麻烦。

查看SharePoint CA中的“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产品表有productID(int)和名称(字符串)。在我的BDC模型中,我将“标题”列映射到产品实体的产品“名称”列。见下文......

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

那是有效的。但它对“索引网址”没有影响。任何提示?我需要忍受的东西?如何调试这个?

更新: DisplayUriField听起来像是一件好事。虽然到目前为止我发现的并不是我想要的。我不是在寻找一种自己提供网址的方法(无论如何我会链接到哪里?!) - 我只是希望“生成的网址”更有意义。

1 个答案:

答案 0 :(得分:0)

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

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

例如,如果您有类似下面的TypeDescriptor(确保您的SELECT语句返回相关列)...

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

我的数据库表网址列包含此类网址

您的专栏中的内容将显示在SharePoints抓取日志(“网址视图”)中。 如果您的列(“Url”)可以为空并且不包含任何值,则BDC将使用该特定项的默认名称。

Crawl result with DisplayUriField set for some items

当然,所有的自定义网址都非常无用。但是,它允许我弄清楚一个特定项目是否已被抓取(成功),因为我可以将显示的Url与ProductID相关联 - 我不能与那些bdc3:// urls。 < / p>