5
我已經Sitecore的具有以下字段頁/ Lucene的文件不工作:Sitecore的搜索謂詞建設者促進多關鍵字搜索根據需要
- 標題
- 名
- 內容
- 文件內容
我正在爲這些創建搜索並具有以下要求:
- 點擊包含標題中的全部短語字段應該先返回。
- 點擊包含文件名字段中的全部短語應返回第二位。
- 包含在內容整個短語命中應返回一個包含在文件內容的整個短語第三
- 命中應返回第四容納關鍵字的所有
- 命中(以任意順序)在標題字段應在文件名域返回第五包含關鍵字的所有(以任何次序
- 點擊率)應該退回第六
- 點擊包含所有的關鍵字(任何順序)在內容應返回第七。
- Hits含全部的關鍵字(任意順序)文件內容應退還第八位。
這裏是我的本錢:
public static Expression<Func<T, bool>> GetSearchTermPredicate<T>(string searchTerm)
where T : ISearchableItem
{
var actualPhrasePredicate = PredicateBuilder.True<T>()
.Or(r => r.Title.Contains(searchTerm).Boost(2f))
.Or(r => r.FileName.Contains(searchTerm).Boost(1.5f))
.Or(r => r.Content.Contains(searchTerm))
.Or(r => r.DocumentContents.Contains(searchTerm));
var individualWordsPredicate = PredicateBuilder.False<T>();
foreach (var term in searchTerm.Split(' '))
{
individualWordsPredicate
= individualWordsPredicate.And(r =>
r.Title.Contains(term).Boost(2f)
|| r.FileName.Contains(term).Boost(1.5f)
|| r.Content.Contains(term)
|| r.DocumentContents.Contains(term));
}
return PredicateBuilder.Or(actualPhrasePredicate.Boost(2f),
individualWordsPredicate);
}
實際的短語部分似乎運作良好。首先返回標題中的完整詞組。但是,如果從短語中間刪除單詞,則不會返回任何結果。
即我有一個標題爲「英格蘭足球隊可怕」的頁面,但是當我搜索「The football team is dreadful」時,它沒有找到頁面。
注意:頁面可以附加文檔,所以我想提高文件名,但不是頁面標題的高度。