2016-08-17 108 views
0

我正在使用sitecore 8,並且正在尋找一種方法來爲我的所有sitecore內容運行全文搜索。我有一個解決方案,但我覺得有一個更好的方法來做到這一點。Sitecore:使用lucene進行全文搜索

我的方法: 我有合併所有文本字段到一個單一的計算領域的計算字段。在執行搜索之前,我將我的搜索文本標記爲標記,並構建ORed謂詞以在該字段上匹配。

,因爲它變得非常複雜,如果我需要,以提高匹配標題VS身體的項目,即我鬆散的現場級提高我不喜歡這種方式。

FYI:我的代碼是非常相似,這so post

感謝

回答

1

Sitecore的已保持一個完整的文本字段,_content,它包含了所有的文本字段。你可以運行你的搜索。您甚至可以創建添加到_content的計算字段(例如數據源內容示例here)。

因此,假設您正在爲您的全文搜索LINQ查詢,並已過濾的模板,最新版本,位置等,增加你的搜索條件來查詢會是這個樣子:

var terms = SearchTerm.Split(); 
var currentExpression = PredicateBuilder.True<SiteSearchResultItem>(); 
foreach (var term in terms) 
{ 
    //Content is mapped to _content 
    currentExpression = PredicateBuilder.And(currentExpression, x => x.Content.Contains(term)); 
} 
query = query.Where(currentExpression); 

通常情況下,您會希望AND搜索條件而不是ORing它們。

你說得對,現場水平的提升是在這丟失的。最後,Lucene不是創建高質量全文網站搜索的絕佳解決方案。如果這是一個重要的要求,你可能想看看科科甚至像谷歌網站搜索。