У меня есть поле, которое является цифрой c. Может иметь несколько значений; 0,7,12,16,18,101 ++
, но только ОДИН из этих значений на документ
Я хочу получить документы со значениями 7,12 и 16
Я пытался использовать BooleanQuery с условиями, которые у меня были не повезло с. Я полагаю, что это потому, что я не ищу строку.
Я попытался использовать NumericRangeFilter.NewIntRange(
и установить минимальное и максимальное значение на фактическое значение, которое я заинтересован в получении.
У меня есть этот код:
public static Query AddRangeFilter(this Query query, string fieldName, IEnumerable<int> validAlternatives)
{
if (!validAlternatives.Any())
return query;
foreach (var alternative in validAlternatives)
{
var filter = NumericRangeFilter.NewIntRange(fieldName, 1, alternative, alternative, true, true);
query = new FilteredQuery(query, filter);
}
return query;
}
, который отлично работает, если я отправлю единственное число в списке. Но если я отправлю больше, это не сработает, естественно, потому что он ищет t.ex. документ со значениями 7 и 12, который не существует, поскольку все документы имеют только единственное число.
Как я могу выполнить этот поиск для 7 ИЛИ 12? Имейте в виду, что this Query query
в AddRangeFilter
уже содержит части запроса.