Сделайте необязательный поиск в umbraco
Я сделал новый тип документа в umbraco. Затем сделал некоторый узел по этому типу документа в контенте. Я настрою новый поисковый индекс, поэтому нашел этот код, который устанавливает новый поисковый индекс.
@* Get the search term from query string *@
@{var searchTerm = Request.QueryString["search"];}
@{var results = ExamineManager.Instance.Search(searchTerm, true); }
но я не знаю, как ограничить этот код, который может искать только в моем типе документа.
1 ответ
Решение
Есть несколько шагов для этого.
Тебе придется:
- Создать
ISearchCriteria
объект; - Создайте поисковое выражение из объекта критерия, включая псевдоним docType как поле для поиска;
- Поиск с использованием выражения.
Это может быть закодировано как:
var criteria = ExamineManager.Instance.CreateSearchCriteria();
var expression = criteria.Field("nodeTypeAlias", "yourDocTypeAlias")
.And()
.Field("nodeName", searchTerm);
var results = ExamineManager.Instance.Search(expression.Compile());
Это возможно, потому что когда Umbraco публикует узел, он сохраняет псевдоним docType узла в поисковом индексе.
Здесь есть больше документации для изучения. Я также рекомендовал бы скачать Luke, который является автономным инструментом, который позволит вам заглянуть внутрь индекса, чтобы вы могли увидеть, что на самом деле хранится в Umbraco.