我使用IProviderSearchContext
在Sitecore 8.1(Lucene Search)中搜索特定項目,並且我得到每個項目(en,ar)的兩個版本。 我的問題是:是否必須爲每個查詢指定:item.Language == Sitecore.Context.Language.Name
還是有辦法使IProviderSearchContext
根據當前Sitecore上下文中的語言獲取數據?Sitecore內容搜索:我必須指定語言嗎?
回答
索引提供程序對於索引非常基本。 通過使用Sitecore.Data.Item進行常規查詢,您的結果將自動按上下文語言和最新項目版本進行過濾,當您使用索引時不會發生此類過濾。 除非您在Linq查詢中指定,否則您將收到所有版本和所有語言。
如果要過濾當前語言的結果,使用索引是必需的:item.Language == Sitecore.Context.Language.Name。 要使用上面的過濾,還需要繼承SearchResultItem中的ResultItem類。否則,你的ResultItem需要一個新的索引字段添加到您的類像上面一個:
[IndexField(「_language」)]
public string Language { get; set; }
您也可以在CultureExecutionContext
傳遞到您的查詢將通過語言限制的結果。
var culture = Sitecore.Context.Language.CultureInfo;
var queryable = context.GetQueryable<SearchResultItem>(new CultureExecutionContext(culture));
有關於這在this後
我快速瀏覽了文章和代碼示例,並將其應用於此:'var query = context.GetQueryable
可能是配置相關的,看看這篇文章,看看它是如何掛在一起 - http://www.sitecore.net/Learn/Blogs/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/08 /Execution-Contexts-Explained.aspx –
- 1. axis2:必須指定內容長度
- 2. 使用Lucene.NET進行Sitecore語言搜索
- 3. 我必須循環搜索特定值的結果嗎?
- 4. Sitecore內容搜索PredicateBuilder與IEnumerable
- 5. Sitecore 7在所有內容中搜索
- 6. 必須爲固有事件指定默認腳本語言
- 7. 我必須在URL中使用語言嗎? [Codeigniter]
- 8. 語言特定內容搜索時使用哪種語言分析器(彈性搜索)?
- 9. 自定義Sitecore的內容編輯器語言選擇
- 10. 我必須刪除這些指針嗎?
- 11. joomla有搜索內容嗎?
- 12. 遊戲搜索樹,我必須先建樹嗎?
- 13. Sitecore Lucene搜索提取多語言站點搜索中的其他語言項目
- 14. 我必須在託管時在select語句中指定數據庫名稱嗎?
- 15. 全文搜索庫,適合多種語言的內容
- 16. 我是否必須一直指定System.Web.HttpContext.Current.Server?
- 17. 我們必須指定實體中的cardinlaty anotation嗎?
- 18. 我必須在Android Manifest中指定父級活動名稱嗎?
- 19. 我必須指定jooq結果類型嗎?
- 20. ObjC:我必須在頭文件中指定繼承嗎?
- 21. c#我必須爲新的類實例指定名稱嗎?
- 22. 語言必須具備哪些功能?
- 23. 使用Lucene.net索引多語言內容
- 24. 在查詢中指定語言以搜索API
- 25. tf.boolean_mask,mask_dimension必須指定?
- 26. 語言內容樹
- 27. 如何在sitecore中加載同一語言的不同內容
- 28. Sitecore索引搜索
- 29. 我必須使用BreezeController嗎?
- 30. 我必須做StringIO.close()嗎?
謝謝你,這是有道理的更多信息。但是我不需要添加'Language'字段,因爲它已經存在於'SearchResultItem'類中。 – TamerM