Мой существующий запрос:
Код: Выделить всё
public async Task Search(string query = "")
{
string[] terms = query.Split(' ');
_allUsers = await GetAllUsers();
List matchingUsers = new List();
if (_examineManager.TryGetIndex("ColleaguesIndex", out _colleaguesIndex))
{
var results = _colleaguesIndex.Searcher.CreateQuery(defaultOperation: BooleanOperation.Or)
.GroupedOr(searchFields, query.MultipleCharacterWildcard()).Or()
.GroupedOr(searchFields, query.Escape()).Or()
.GroupedOr(searchFields, terms)
.Execute();
var resultsID = results.Select(r => r.Id);
matchingUsers = _allUsers.Where(u => resultsID.Contains(u.OnPremisesSamAccountName)).ToList();
}
return matchingUsers;
}
Я попробовал изменить .GroupedOr(searchFields, terms) на .GroupedAnd(searchFields, terms).
Я попробовал изменить .GroupedOr(searchFields, query.Escape()) на .GroupedAnd(searchFields, query.Escape())
В обоих случаях я получаю 0 результатов. Проблема с изменением их на GroupedAnd заключается в том, что я думаю, что он проверяет, ВСЕ ли поля в моем searchFields = "Project Controller".
Я упростил свой запрос в целях тестирования и запустил это:< /p>
Код: Выделить всё
var results = _colleaguesIndex.Searcher.CreateQuery().GroupedOr(searchFields, query.Escape()).Execute();
Подробнее здесь: https://stackoverflow.com/questions/788 ... ase-search