Поиск по содержимому (используя Examine) на наших веб-сайтах нарушен. Проблемы могут быть разделены на три различные категории:Как настроить проверку Searcher для исключения удаленных страниц
Поиск возвращает удаленные страницы: Я не уверен, как удалить удаленное содержимое из результата поиска. Есть ли способ добавить критерии фильтра для исключения удаленных страниц?
Поиск возвращает содержимое со всех сайтов: Мы используем два веб-сайта для двух разных стран (Австралия и Новая Зеландия) в одном экземпляре Umbraco. Проблема заключается в том, что результат поиска возвращает страницы с обоих сайтов. Нам не нужны страницы AU на результат поиска в Новой Зеландии и наоборот. Как создать поисковый запрос, чтобы ограничить его определенным идентификатором корневого узла?
Создание страниц без шаблона: Некоторые узлы контента не имеют связанных с ними шаблонов и должны отображаться как часть родительского узла. Есть ли способ ограничить поиск конкретными типами документов? Но, если содержимое найдено на дополнительном узле, воспитывайте родительский узел с определенным типом документа?
Я, вероятно, задаю слишком много вопросов в одном сообщении, но, я думаю, другие пользователи могли столкнуться с такими проблемами раньше.
код я использую до сих пор:
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;
}