2016-06-13 3 views
0

Я использую ниже поисковый запрос:Упругие поиск Строка запроса Java API дает одинаковое количество баллов для всех результатов

{ «от»: «0», «размер»: «20», «запрос»: { "query_string": {"fields": ["title"], "query": "seller *", "analyse_wildcard": true}}}

Этот скручиваемый хит возвращает мне результаты/результаты с правильным счетом, тогда как я я стараюсь, так же, как транспортный клиент elasticsearch, например:

String queryString = "{" 
      + "\"query_string\" : {\n" + 
      "  \"fields\" : [\"title\"],\n" + 
      "  \"query\" : "+ "\"" + searchQuery + "\",\n" + 
      "  \"analyze_wildcard\": true \n" + 
      " }}\n"; 

SearchResponse response2 = client.prepareSearch(indexName).setTypes(successZoneTypeName).setFrom(0).setSize(30).setQuery(QueryBuilders.queryStringQuery(queryString)).get(); 

Это возвращает результат с одинаковым счетом против всех хитов.

Даже я пробовал с клиентом jest, результат такой же, я не получаю должных результатов в результате.

ответ

1

Это не правильный способ построения запроса строки запроса через Java. Вы должны сделать это следующим образом:

QueryBuilder qs = QueryBuilders.queryStringQuery("\"" + searchQuery + "\"") 
    .field("title") 
    .analyzeWildcard(true); 

SearchResponse response2 = client.prepareSearch(indexName) 
    .setTypes(successZoneTypeName) 
    .setFrom(0) 
    .setSize(30) 
    .setQuery(qs) 
    .get(); 
+0

Почему это, если searchQuery соединен с звездочкой '*' в случае поиска по шаблону, оценка для всех записей равна 1? – abhineet

+0

Возможно, вы должны задать новый вопрос, так как это принесет пользу другим читателям SO. – Val

+0

Как вы предположили, я создал отдельный вопрос для этого [ссылка] (http://stackoverflow.com/questions/37875057/why-is-that-if-the-search-string-is-concatenated-with-asterisk- in-case-of-wi) Кроме того, я понял, что даже в этом вопросе я получал одинаковый балл, т.е. 1 из-за «*», иначе он отлично работает. – abhineet