一定模板的項目,我們的用戶可以指示該項目應在列表的頂部顯示。Sitecore 7 + Lucene:查詢時間提升:如何?
對於這一點,我們在指數「ShowOnTop」添加一個字段。現在
此模板(打造的列表頁)項搜索時,我們想必須有效地對其他物品的頂部返回這些「ShowOnTop」項目。
此字段但是應該不會影響其他網站的搜索(一般搜索)。
我們認爲,這可以通過將查詢時間推進到這些文件成爲可能。但是,我們怎樣才能做到這一點?
一定模板的項目,我們的用戶可以指示該項目應在列表的頂部顯示。Sitecore 7 + Lucene:查詢時間提升:如何?
對於這一點,我們在指數「ShowOnTop」添加一個字段。現在
此模板(打造的列表頁)項搜索時,我們想必須有效地對其他物品的頂部返回這些「ShowOnTop」項目。
此字段但是應該不會影響其他網站的搜索(一般搜索)。
我們認爲,這可以通過將查詢時間推進到這些文件成爲可能。但是,我們怎樣才能做到這一點?
也許最好的辦法是基於這一領域的應用排序,沿着線的東西:
Sort sort = new Sort(new SortField("ShowOnTop", SortField.STRING, true), true);
var hits = new SearchHits(context.Searcher.Search(query, sort));
你也沿着線將其添加爲重提振可選的查詢詞,東西,並進行查詢的其餘部分需要(作爲一個整體),如:
ShowOnTop:true^10000 +(the rest of the query)
有了足夠大的助推因素,這些方面應該總是拿出第一除非有關聯真的大幅差異。
最簡單的就是創建/sitecore/system/Settings/Rules/Indexing and Search/...
是您ShowOnTop場過濾下的規則(我用一個複選框,並與1
值),調整由99999999
升壓您可以添加此規則爲全局規則,或者你可以將其添加爲物料規則並從物料內分配規則。
祝你好運!
要做到在查詢時提高簡單地使用升壓(value)方法(使用搜索謂詞,因爲它聽起來就像你可能會做一些先進的搜索過程中的謂詞的靈活性可能會派上用場) -
var queryPredicate = PredicateBuilder.True<SearchResult>();
queryPredicate = queryPredicate.And(i =>
i.Headline.Contains(model.Query).Boost(50));