2015-10-19 60 views
2

我正在使用Sitecore 8.我有一個多語言站點。有不同語言內容的項目,當我嘗試搜索時,項目也屬於其他語言。假設我有一個英文名稱爲「ABC」的項目以及其日文,韓文和中文版本的相應版本(內容翻譯爲相應的語言)。如果我在韓語中使用關鍵字「ABC」進行搜索,那麼預期結果爲0,但是,即使韓文版中沒有包含「ABC」字樣的項目名稱,我也會得到韓文版本的項目。 在代碼中,我過濾基於語言查詢下面給出:Sitecore Lucene搜索提取多語言站點搜索中的其他語言項目

query = query.Filter(item => item.Language == Sitecore.Context.Language.Name); 

,我根據標題和項目的內容得到下面的結果給出:

query = query.Where(x => x.Title.Contains(word) || x.Content.Contains(word)); 

哪裏單詞是基於空間切片的搜索字符串。

請指導我解決這個問題。

回答

4

where條款包括|| x.Content.Contains(word))

SearchResultItem類的Content屬性是所有記號化領域,包括項目名稱的串聯。所以出於這個原因,我認爲這種行爲是正確的。

我推薦使用您要搜索的特定字段而不是使用Content

您的項目中可能有一個名爲"content"的字段。如果是這樣的話,那麼你可以通過簡單地將其映射到不同的屬性避免在您的POCO屬性名稱的衝突如下:

[IndexField("content")] 
public virtual string ContentField { get; set; } 

這些博客文章指從該Content屬性是_content計算索引字段的。