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 个这样的
- http://localhost/adventurworks/catalog/1
- http://localhost/adventurworks/catalog/316
- http://localhost/adventurworks/catalog/317
- [...]
您的专栏中的任何内容都将显示在 SharePoints 爬网日志 ("Url View") 中。
如果您的列 ("Url") 可以为空且不包含任何值,BDC 将为该特定项目使用默认名称。
当然,毕竟自定义 url 实在太他妈没用了。但是,它允许我弄清楚某个特定项目是否已被(成功)抓取,因为我可以将显示的 Url 与 ProductID 相关联——而我不能使用那些 bdc3:// 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 个这样的
- http://localhost/adventurworks/catalog/1
- http://localhost/adventurworks/catalog/316
- http://localhost/adventurworks/catalog/317
- [...]
您的专栏中的任何内容都将显示在 SharePoints 爬网日志 ("Url View") 中。 如果您的列 ("Url") 可以为空且不包含任何值,BDC 将为该特定项目使用默认名称。
当然,毕竟自定义 url 实在太他妈没用了。但是,它允许我弄清楚某个特定项目是否已被(成功)抓取,因为我可以将显示的 Url 与 ProductID 相关联——而我不能使用那些 bdc3:// urls。