我們網站上的內容搜索(使用檢查)已損壞。這些問題可以分爲三個不同的類別:配置檢查搜索器如何排除已刪除的頁面
搜索返回已刪除的頁面:我不知道如何從搜索結果中刪除已刪除的內容。有沒有辦法添加過濾條件來排除已刪除的頁面?
搜索正在返回來自所有網站的內容:我們在一個Umbraco實例中爲兩個不同國家(澳大利亞和新西蘭)運行兩個網站。問題是搜索結果是從這兩個網站返回頁面。我們在新西蘭搜索結果上不需要AU頁面,反之亦然。如何創建搜索查詢以將其限制爲特定的根節點ID?
使用不帶模板的頁面:某些內容節點沒有與它們關聯的模板,並且將顯示爲父節點的一部分。有沒有辦法將搜索限制到特定的文檔類型?但是,如果在子節點上找到內容,請調出具有特定文檔類型的父節點?
我可能會在一篇文章中提出太多問題,但我想其他用戶可能以前遇到過這樣的問題。
的代碼我使用至今:
private List<SiteSearchResult> GetSiteResults(string query, out int totalResults)
{
var criteria = ExamineManager.Instance
.SearchProviderCollection["WebSearcher"]
.CreateSearchCriteria(IndexTypes.Content);
var filter =
criteria.GroupedOr(
new[]
{
"nodeName", "heading", "content", "metaKeywords", "title", "umbracoNaviHide", "umbracoUrlName",
"umbracoUrlAlias", "metaCategory", "metaDescription", "metaTags", "heading", "subHeading",
"quote", "author", "socialCopy", "socialTitle", "socialTitle2", "thumbTitle", "thumbTitle2",
"thumbCopy", "thumbQuote", "url", "location"
}, query)
.Compile();
var searchResults =
ExamineManager.Instance.SearchProviderCollection["WebSearcher"].Search(filter)
.OrderByDescending(x => x.Score);
totalResults = searchResults.Count();
var results = new List<SiteSearchResult>();
foreach (var item in searchResults)
{
var heading = "";
var copy = "";
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var url = umbracoHelper.Url(item.Id, UrlProviderMode.Relative);
if (url.Length == 0)
{
continue;
}
if (url.StartsWith("/forms/"))
{
continue;
}
// Do many things here
results.Add(r);
}
return results;
}