Я использую Examine в Umbraco для запроса индекса узлов содержимого Lucene. У меня есть поле «completeNodeText», которое представляет собой объединение всех свойств узла (чтобы упростить задачу и не выполнять поиск по нескольким полям).
Я принимаю условия поиска, введенные пользователями. Когда поисковый запрос состоит из нескольких слов (например, «firstterm secondterm»), я хочу, чтобы результирующий запрос был запросом OR: верните мне результаты, где fullNodeText - firstterm OR secondterm.
Я хочу:
{+completeNodeText:"firstterm ? secondterm"}
но вместо этого я получаю:
{+completeNodeText:"firstterm secondterm"}
Если я ищу "firstterm OR secondterm" вместо "firstterm secondterm", то сгенерированный запрос будет правильным: {+completeNodeText:"firstterm ? secondterm"}
Я использую следующие вызовы API:
var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
var searchCriteria = searcher.CreateSearchCriteria();
var query = searchCriteria.Field("completeNodeText", term).Compile();
Есть ли простой способ заставить Examine генерировать этот запрос "ИЛИ"? Или мне нужно вручную создать необработанный запрос, вызвав StandardAnalyzer для токенизации пользовательского ввода и объединить запрос путем итерации по токенам? И в обход всего API-интерфейса Examine Fluent query?