未找到 sitecore IComputedIndexField class/未找到 运行
sitecore IComputedIndexField class isn't found / doens't run
我添加了 ComputedIndexFields.config 个文件,代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<indexConfigurations>
<defaultIndexConfiguration>
<fields hint="raw:AddComputedIndexField">
<field fieldName="AppliedThemes" storageType="yes" indexType="TOKENIZED">be.extensions.AppliedThemes, be.extensions</field>
</fields>
</defaultIndexConfiguration>
</configuration>
</contentSearch>
</sitecore>
</configuration>
我还在上述组件中添加了一个class:
namespace be.extensions
{
class AppliedThemes : IComputedIndexField
{
public string FieldName { get; set; }
public string ReturnType { get; set; }
public object ComputeFieldValue(IIndexable indexable)
{
Item item = indexable as SitecoreIndexableItem;
if (item == null)
return null;
var themes = item["Themes"];
if (themes == null)
return null;
// TODO
}
}
}
我想测试我已经编写的一小段代码。所以我在 "ComputeFieldValue(IIndexable indexable)" 方法的第一行添加了一个断点并启动了网站(调试时)。
我更改了几个项目,将它们保存下来然后重建索引树,但我的断点从未命中。
class 位于不同的项目中,并构建到程序集名称为 "be.extensions"
的 .dll 中
我正在使用 sitecore 8 更新 2。
有谁知道我做错了什么或者为什么无法访问此代码?
(比如这段代码是否发送到我根本无法调试的某些 Lucene 工作流程)
由于 Sitecore 对包含文件的结构进行了更改,您的配置可能没有被修补。即,defaultIndexConfiguration
节点更改为 defaultLuceneIndexConfiguration
以及新的类型属性。您可以使用 /sitecore/admin/showconfig.aspx
实用程序页面验证您的计算字段是否已正确修补。另外,请注意每个计算索引字段的 storageType
和 indextype
现在定义在 <fieldMap><fieldNames>
部分,而不是您现在拥有它的地方。
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<indexConfigurations>
<defaultLuceneIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider">
<fields hint="raw:AddComputedIndexField">
<field fieldName="yourname">be.extensions.AppliedThemes, be.extensions</field>
</fields>
</defaultLuceneIndexConfiguration>
</indexConfigurations>
</contentSearch>
</sitecore>
</configuration>
我添加了 ComputedIndexFields.config 个文件,代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<indexConfigurations>
<defaultIndexConfiguration>
<fields hint="raw:AddComputedIndexField">
<field fieldName="AppliedThemes" storageType="yes" indexType="TOKENIZED">be.extensions.AppliedThemes, be.extensions</field>
</fields>
</defaultIndexConfiguration>
</configuration>
</contentSearch>
</sitecore>
</configuration>
我还在上述组件中添加了一个class:
namespace be.extensions
{
class AppliedThemes : IComputedIndexField
{
public string FieldName { get; set; }
public string ReturnType { get; set; }
public object ComputeFieldValue(IIndexable indexable)
{
Item item = indexable as SitecoreIndexableItem;
if (item == null)
return null;
var themes = item["Themes"];
if (themes == null)
return null;
// TODO
}
}
}
我想测试我已经编写的一小段代码。所以我在 "ComputeFieldValue(IIndexable indexable)" 方法的第一行添加了一个断点并启动了网站(调试时)。
我更改了几个项目,将它们保存下来然后重建索引树,但我的断点从未命中。
class 位于不同的项目中,并构建到程序集名称为 "be.extensions"
的 .dll 中我正在使用 sitecore 8 更新 2。
有谁知道我做错了什么或者为什么无法访问此代码? (比如这段代码是否发送到我根本无法调试的某些 Lucene 工作流程)
由于 Sitecore 对包含文件的结构进行了更改,您的配置可能没有被修补。即,defaultIndexConfiguration
节点更改为 defaultLuceneIndexConfiguration
以及新的类型属性。您可以使用 /sitecore/admin/showconfig.aspx
实用程序页面验证您的计算字段是否已正确修补。另外,请注意每个计算索引字段的 storageType
和 indextype
现在定义在 <fieldMap><fieldNames>
部分,而不是您现在拥有它的地方。
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<indexConfigurations>
<defaultLuceneIndexConfiguration type="Sitecore.ContentSearch.LuceneProvider.LuceneIndexConfiguration, Sitecore.ContentSearch.LuceneProvider">
<fields hint="raw:AddComputedIndexField">
<field fieldName="yourname">be.extensions.AppliedThemes, be.extensions</field>
</fields>
</defaultLuceneIndexConfiguration>
</indexConfigurations>
</contentSearch>
</sitecore>
</configuration>