Что такое оператор Retrofit OR для поиска

Я в основном хотел бы искать запрос с 2 фильтрами / тегами

(e.g. 1 city in 2 countries - US OR CANADA)

ElasticSearchAPi.java


    public interface ElasticSearchAPI {
        @GET("_search/")
        Call search(
                @HeaderMap Map headers,
                @Query("default_operator") String operator,
                @Query("q") String query

        );
    }

Часть Search.java


    Retrofit retrofit = new Retrofit.Builder()
                                .baseUrl(BASE_URL)
                                .addConverterFactory(GsonConverterFactory.create())
                                .build();

                        ElasticSearchAPI searchAPI = retrofit.create(ElasticSearchAPI.class);

                        HashMap headerMap = new HashMap();
                        headerMap.put("Authorization", Credentials.basic("user", mElasticSearchPassword));

                        String searchString = "";

                        if (!mSearchText.equals("")){
                            searchString = searchString + mSearchText.getText().toString() + "*";
                        }
                        if (!mPrefCountry.equals("")){
                            searchString = searchString + " country:" + mPrefCountry;
                        }

                        Call call = searchAPI.search(headerMap, "AND", searchString);

                        call.enqueue(new Callback() {
                            @Override
                            public void onResponse(Call call, Response response) {

                                HitsList hitsList = new HitsList();
                                String jsonResponse = "";
                                try{
                                    Log.d(TAG, "onResponse: server response: " + response.toString());

                                    if (response.isSuccessful()){
                                        hitsList = response.body().getHits();
                                    }else{
                                        jsonResponse = response.errorBody().string();
                                    }

                                    Log.d(TAG, "onResponse: hits: " + hitsList);

                                    for(int i = 0; i  call, Throwable t) {
                                Log.e(TAG, "onFailure: " + t.getMessage() );
                                Toast.makeText(getActivity(), "search failed", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }

                    return false;
                }

например код отображает запрос ff, который показывает доступные города с НОВЫЙ в названии внутри страны нас:

_search?default_operator=AND&q=new*+country:Us

но я пытаюсь добиться чего-то вроде этого:

_search?default_operator=AND&q=new*+country:Us||Canada

это должно привести к отображению всех городов с НОВЫЙ в названии внутри США ИЛИ КАНАДА.

но ||, похоже, не работает, поэтому я прошу правильный оператор Retrofit OR или что-то, что может помочь мне достичь моей цели.

Какой вопрос? С какой проблемой вы столкнулись с текущим кодом, размещенным здесь как минимальный воспроизводимый пример? Пожалуйста, дополните. А также образец URL-адреса, к которому вы пытаетесь получить доступ, может помочь понять проблему.

Shashanth 06.10.2018 06:26

@Shashanth, я добавил больше информации, надеюсь, это проясняет мой вопрос

user3605994 07.10.2018 02:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
283
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нашел ответ:

| означает операцию ИЛИ

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html

Но он не работает в запросах, поэтому для достижения моей цели мне нужно превратить | в OR (с пробелами до и после)

_search?default_operator=AND&q=new*+country:(Us OR Canada)

Другие вопросы по теме