Sitecore Solr错误未定义字段标记

时间:2016-01-24 12:02:22

标签: solr sitecore sitecore8

我正在使用Sitecore 8.1和SOLR Search Provider。当我执行搜索时,我收到以下错误:

2480 2016:01:24 21:29:14 ERROR Solr Error : ["undefined field tags"] - Query  attempted: [((_basetemplates_sm:(13789a2000bc4f77a98f40d0a2f18738) AND

-standardvalue_b:(True)) AND ((title_t:(*smoking*))^9 OR (abstract_t: 

(*smoking*))^0.200000002980232 OR (articlefulltext_s: 

(*smoking*))^0.200000002980232 OR (title_t:(*be*))^9 OR (abstract_t: 

(*be*))^0.200000002980232 OR (articlefulltext_s:(*be*))^0.200000002980232 OR  

(tags:(d4426cf378c14a97be3459cd9bfe569b))^0.100000001490116))]

我认为问题在于Sitecore API以某种方式发送标记而不是 tags_sm 。当我在SOLR管理员门户查询字符串上手动更新此字段时,它将返回数据。

现在真正的问题是Sitecore API为什么/如何发送标签而不是tags_sm。我看了web_index核心上的schema.xml,它有以下内容:

<field name="_tags" type="string" indexed="true" stored="true" multiValued="true" />

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

对于以_开头的所有字段,Sitecore不会附加后缀(例如_sm)。因此,Solr中的字段将是_tags(您应该能够通过Luke确认这一点)。

检查您的SearchResultItem课程(传递给IQuerable的课程)是否具有[IndexField("tags")]属性的属性,并将其更改为[IndexField("_tags")]

同时回答你问题的其他部分 - 你永远不应该担心Solr中的字段名称是什么。始终使用Sitecore配置中的Sitecore内置字段。对于您自己的字段,请使用小写字母。就是这样。

答案 1 :(得分:1)

将根据字段类型添加_sm标记。检查Sitecore.ContentSearch.Solr.DefaultIndexConfiguration和/ sitecore / contentSearch / indexConfigurations / defaultSolrIndexConfiguration / FieldMap / typeMatches中的元素

这里的id列表被映射到typeName =&#34; guidCollection&#34;中的[fieldName] _sm。检查您的配置是否包含这个&#34; _sm&#34;延期。如果确实如此,您可能需要检查&#34; fieldNames&#34;的地图。不包含标签字段名称,因此它不会获得正确的后缀。

如果更改配置,请记住重建索引。

答案 2 :(得分:0)

我有一个类似的问题,解决方法是匹配后端中定义的字段类型。确保在C#中触发搜索的代码具有正确的字段类型。就我而言,当我将ID类型切换为Guid时,我试图在标签中使用ID类型,该名称在查询索引时会自动加上_sm后缀。还要确保使用正确的集合类型与IEnumerable相比,列表工作正常。

请注意,与在lucene中使用IEnumerable的ID相同的字段类型的代码。

public class MySearchContentModel : SearchResultItem
{
        [IndexField(BuiltinFields.LatestVersion)]
        public bool IsLatestVersion { get; set; }

        [IndexField("Tag")]
        public List<Guid> Tag { get; set; }
}

答案 3 :(得分:0)

IEnumerable to List转换对我有用。我有:“ undefined field tags”,这很容易被我替换为List。我正在将solr 6.6.2升级到solr 7.5