использовать фильтр по терминам в BooleanQuery в Liferay - PullRequest
0 голосов
/ 06 сентября 2018

Я смог использовать постфильтры:

    POST _search
    {
      "query": {
        "bool" : {
          "must" : {
            "term" : { "user" : "kimchy" }
          }
        }
       },
       "post_filter":{
            "terms" : { "tag" : ["tech", "luxury"] }
          },
       ...
    }

код для выполнения этого запроса:

 SearchEngine searchEngine=SearchEngineHelperUtil
                                    .getSearchEngine(s_ctx.getSearchEngineId());
 IndexSearcher indexSearcher = searchEngine.getIndexSearcher();
 ...
 TermsFilter termsFilter = new TermsFilter("tag");
 termsFilter.addValue("tech");
 termsFilter.addValue("luxury");

 BooleanQuery booleanQuery = new BooleanQueryImpl(); //use factory instead
 ...
 booleanQuery.setPostFilter(termsFilter);
 indexSearcher.search(s_ctx, booleanQuery);
 ....
 //s_ctx is the searchContext

я хочу, чтобы запрос был похож на ElasticSearch doc :

   POST _search
    {
      "query": {
        "bool" : {
          "must" : {
            "term" : { "user" : "kimchy" }
          },
          "filter": {
            "terms" : { "tag" : ["tech", "luxury"] }
          },
       ...
    }

Как я могу выполнить этот запрос в моем собственном портлете, используя BoolQuery.class или что-то подобное в liferay 7?

...