Как выполнить поиск по нескольким терминам в Sitecore 7 ContentSearch API?

Я изучаю новыйSitecore.ContentSearch API "LINQ to Sitecore" в Sitecore 7. Насколько я понимаю, Sitecore рекомендует использовать новый API LINQ поверх существующихSitecore.Search API, однако, я изо всех сил пытаюсь выполнить даже самые простые запросы.

Возьмем, к примеру, следующий поисковый запрос:"hello world".

С помощьюSitecore.Search API, термины «привет мир» обычно передаются черезQueryParser что приведет к документам, совпадающим со словом "привет" или "мир". Документы, содержащие оба термина, будут оцениваться выше, чем документы, содержащие только один.

Как выполнить этот же запрос с помощью LINQ?

Вот что я попробовал:

var results = SearchContext.GetQueryable<MyResultItem>();

var terms = searchTerm.Split(' ');

// Not supported exception
results = results.Where(r => terms.Any(t => r.Content.Contains(r)));

// Close, but performs an "AND" between terms, and does not appear
// to score documents properly
foreach (var term in terms)
{
    results = results.Where(r => r.Content.Contains(t));
}

ОБНОВИТЬ

Я убежден, что мне не хватает чего-то действительно простого. Конечно, со всей работой, которая была включена в новый API поиска, этот простой вариант использования не был пропущен ... верно?

В качестве обходного пути я попытался открыть дефолтsitecore_web_index используя существующий SearchManager, однако, это не работает.

К сожалению, мне пришлось прибегнуть к существующему API, пока я не смог понять это. Я буду уверен, чтобы обновить этот вопрос с моими выводами.

ОБНОВЛЕНИЕ 2

Я нашелSitecore.ContentSearch.Utilities.LinqHelper класс, который частично решает проблему. Вы можете использовать его для динамического построения запроса, аналогичногоBooleanQuery в Lucene.Net, однако, его возможности ограничены, и это увеличивает производительность.

Ответы на вопрос(3)

Ваш ответ на вопрос