我正在使用Sitecore 8.1和SOLR搜索提供程序。当我执行搜索我得到以下错误:Sitecore Solr错误未定义的字段标记
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 Admin Portal查询字符串上手动更新此字段时,它会返回数据。
现在真正的问题是为什么Sitecore API发送标签而不是tags_sm。我看了一下web_index核心上的schema.xml,它具有以下内容:
<field name="_tags" type="string" indexed="true" stored="true" multiValued="true" />
感谢您的帮助。
它是您的自定义搜索查询吗?或者内置Sitecore查询?对于以'_'开头的所有字段,Sitecore不会附加后缀(如'_sm')。所以Solr的领域将是'_tag'(你应该可以通过卢克证实这一点)。检查你的'SearchResultItem'类(你传递给IQuerable的那个类)是否有一个带有[[IndexField(“tags”)]属性的属性,并在那里添加非内容。 –
感谢@MarekMusielak,您的解决方案奏效。我将标签的属性更新为_tags工作! –
btw,索引字段映射究竟如何工作,即如何判断是否以_作为前缀。 SOLR如何决定索引字段的名称。 –