Сделайте необязательный поиск в 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.

Другие вопросы по тегам