2016-01-24 59 views
1

我正在使用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" /> 

感謝您的幫助。

+0

它是您的自定義搜索查詢嗎?或者內置Sitecore查詢?對於以'_'開頭的所有字段,Sitecore不會附加後綴(如'_sm')。所以Solr的領域將是'_tag'(你應該可以通過盧克證實這一點)。檢查你的'SearchResultItem'類(你傳遞給IQuerable的那個類)是否有一個帶有[[IndexField(「tags」)]屬性的屬性,並在那裏添加非內容。 –

+0

感謝@MarekMusielak,您的解決方案奏效。我將標籤的屬性更新爲_tags工作! –

+0

btw,索引字段映射究竟如何工作,即如何判斷是否以_作爲前綴。 SOLR如何決定索引字段的名稱。 –

回答

2

對於以_開頭的所有字段,Sitecore不會附加後綴(如_sm)。所以在Solr的領域將是_tags(你應該能夠與盧克確認這一點)。

檢查您的SearchResultItem類別(您傳遞給IQuerable的類別)是否具有屬性[IndexField("tags")]屬性並將其更改爲[IndexField("_tags")]

也回答你的問題的其他部分 - 你不應該擔心什麼是Solr的字段名稱。始終使用Sitecore內置字段的Sitecore配置中的內容。而對於你自己的領域,使用他們的名字小寫。而已。

1

將根據字段類型添加_sm標記。檢查Sitecore.ContentSearch.Solr.DefaultIndexConfiguration和ID的列表被映射到在類型名稱= 「guidCollection」[fieldName的] _sm在/ Sitecore的/ contentSearch/indexConfigurations/defaultSolrIndexConfiguration/FieldMap/typeMatches

這裏的元素。檢查你的配置是否有這個「_sm」擴展名。如果確實如此,您可能需要檢查「fieldNames」的地圖是否包含標籤字段名稱,以便它不會獲得正確的後綴。

如果更改配置,請記住重建索引。

相關問題