Jak przeprowadzić wyszukiwanie wielu terminów w Sitecore 7 ContentSearch API?

Badam noweSitecore.ContentSearch Interfejs API „LINQ to Sitecore” w Sitecore 7. Rozumiem, że Sitecore zaleca korzystanie z nowego interfejsu API LINQ w stosunku do istniejącegoSitecore.Search API, jednak staram się wykonywać nawet najprostsze zapytania.

Weźmy na przykład następujące zapytanie:"hello world".

UżywającSitecore.Search API, terminy „witaj świecie” zazwyczaj byłyby przekazywane przezQueryParser co spowoduje, że dokumenty będą pasować do słowa „witaj” LUB „świat”. Dokumenty zawierające oba terminy byłyby oceniane wyżej niż te z jednym.

Jak wykonać to samo zapytanie za pomocą LINQ?

Oto, co próbowałem:

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));
}

AKTUALIZACJA

Jestem przekonany, że brakuje mi czegoś naprawdę prostego. Z całą pracą związaną z nowym interfejsem API wyszukiwania ten prosty przypadek użycia nie został pominięty ... prawda?

Jako obejście próbowałem otworzyć domyślnesitecore_web_index jednak przy użyciu istniejącego SearchManager to nie działa.

Niestety, musiałem uciekać się do istniejącego API, dopóki nie zdołam tego wyjaśnić. Na pewno zaktualizuję to pytanie moimi ustaleniami.

AKTUALIZACJA 2

znalazłemSitecore.ContentSearch.Utilities.LinqHelper klasa, która częściowo rozwiązuje problem. Możesz go użyć do dynamicznego budowania zapytania podobnego do aBooleanQuery w Lucene.Net jego opcje są jednak ograniczone i zwiększają nieco wydajność.

questionAnswers(3)

yourAnswerToTheQuestion