powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / не хочу форыч, хочу модный стрим
14 сообщений из 14, страница 1 из 1
не хочу форыч, хочу модный стрим
    #40051354
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть код:

Код: java
1.
2.
3.
4.
5.
6.
        BoolQueryBuilder organizationsQuery = QueryBuilders.boolQuery();
        for (String filterBy : organizationIds) {
            organizationsQuery = organizationsQuery.should(QueryBuilders.wildcardQuery(ORGANIZATION_ID, filterBy));
        }

        queryBuilder.must(organizationsQuery)



так же выглядит стримом:
Код: java
1.
2.
3.
4.
5.
        return queryBuilder.must(
                organizationIds.stream()
                        .reduce(QueryBuilders.boolQuery(),
                                (q, o) -> q.should(QueryBuilders.wildcardQuery(ORGANIZATION_ID, o)),
                                (a,b) -> null));



собссно вопрос. можно ли стримом сделать лучше? я не нашел более нормального редьюса
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051380
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это запрос для эластик-сёрча? Может там на выходе - просто список organizationIds, разделенных пробелом?
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051390
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это эластик rhl клиент. Не думаю что там одна строка там массив объектов-предикатов типа или а или б или ц или д и тп который внутри предиката и который в массиве других предикатов
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051397
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Ты учи как принято в эластик, а не как хочет твой извращенный вкус.
Тему обзывай как полагается. Тут с эластиком пол человека.
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051401
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
есть код:

Код: java
1.
2.
3.
4.
5.
6.
        BoolQueryBuilder organizationsQuery = QueryBuilders.boolQuery();
        for (String filterBy : organizationIds) {
            organizationsQuery = organizationsQuery.should(QueryBuilders.wildcardQuery(ORGANIZATION_ID, filterBy));
        }

        queryBuilder.must(organizationsQuery)




Тут - как-то странно. В теле цикла должен быть кумулятивный эффект. Что-то берем. И что-то накапливаем.
А зачем тогда пере-присваиваем?
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051404
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что если убрать organizationsQuery = оно начнет переопределять одно правило а не добавлять.
я хз как это работает и почему так. вот честно. у меня те же мысли что и у тебя сейчас.

думаю типа как стринг.конкат() который не меняет стейт самого стринга а создает новую.
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051405
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
andreykaT,
Ты учи как принято в эластик, а не как хочет твой извращенный вкус.
Тему обзывай как полагается. Тут с эластиком пол человека.

если ты читать не умеешь не лезь со своими бездарными комментами которые ты пишешь ради накручивания счетчика в определенных темах. речь вообще не про эластик.
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051406
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Если ты такой умный,то почему прошлую тему закрыли, а позапрошлая про кафку была идиотская по смыслу?
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051407
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
потому что если убрать organizationsQuery = оно начнет переопределять одно правило а не добавлять.
я хз как это работает и почему так. вот честно. у меня те же мысли что и у тебя сейчас.

думаю типа как стринг.конкат() который не меняет стейт самого стринга а создает новую.

А. Я понял. Это как сложение в BigInteger. Иммутабельная зараза.
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051409
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как улучшить reduce - ХЗ. Но у него есть 3 формы. С разным числом аргументов.

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Stream.html
Код: java
1.
Optional<T> 	reduce(BinaryOperator<T> accumulator) 	



Performs a reduction on the elements of this stream, using an associative accumulation function, and returns an Optional describing the reduced value, if any.

Код: java
1.
T 	reduce(T identity, BinaryOperator<T> accumulator) 	


Performs a reduction on the elements of this stream, using the provided identity value and an associative accumulation function, and returns the reduced value.

Код: java
1.
<U> U 	reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner) 	


Performs a reduction on the elements of this stream, using the provided identity, accumulation and combining functions.

Можно попробовать другие сигнатуры.
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051410
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 понятно бесполезен :)
2 не понял как
3 то что сделал
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051470
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать написать свой BoolQueryBuilder который делает мутирующий .should
или обернуть оберткой существующий. И решить задачу не через reduce а через collect.
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051678
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
есть код:

Код: java
1.
2.
3.
4.
5.
6.
        BoolQueryBuilder organizationsQuery = QueryBuilders.boolQuery();
        for (String filterBy : organizationIds) {
            organizationsQuery = organizationsQuery.should(QueryBuilders.wildcardQuery(ORGANIZATION_ID, filterBy));
        }

        queryBuilder.must(organizationsQuery)



так же выглядит стримом:
Код: java
1.
2.
3.
4.
5.
        return queryBuilder.must(
                organizationIds.stream()
                        .reduce(QueryBuilders.boolQuery(),
                                (q, o) -> q.should(QueryBuilders.wildcardQuery(ORGANIZATION_ID, o)),
                                (a,b) -> null));



собссно вопрос. можно ли стримом сделать лучше? я не нашел более нормального редьюса


в твоем коде не раскрыто что такое organizationIds
...
Рейтинг: 0 / 0
не хочу форыч, хочу модный стрим
    #40051713
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забухал?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / не хочу форыч, хочу модный стрим
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]