/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.search.elasticsearch.internal.query; import com.liferay.portal.kernel.search.BooleanQuery; import com.liferay.portal.kernel.search.Query; import com.liferay.portal.kernel.search.SearchContext; import com.liferay.portal.kernel.search.TermQuery; import com.liferay.portal.kernel.search.TermRangeQuery; import com.liferay.portal.kernel.search.WildcardQuery; import com.liferay.portal.kernel.search.generic.DisMaxQuery; import com.liferay.portal.kernel.search.generic.FuzzyQuery; import com.liferay.portal.kernel.search.generic.MatchAllQuery; import com.liferay.portal.kernel.search.generic.MatchQuery; import com.liferay.portal.kernel.search.generic.MoreLikeThisQuery; import com.liferay.portal.kernel.search.generic.MultiMatchQuery; import com.liferay.portal.kernel.search.generic.NestedQuery; import com.liferay.portal.kernel.search.generic.StringQuery; import com.liferay.portal.kernel.search.query.QueryTranslator; import com.liferay.portal.kernel.search.query.QueryVisitor; import com.liferay.portal.search.elasticsearch.query.BooleanQueryTranslator; import com.liferay.portal.search.elasticsearch.query.DisMaxQueryTranslator; import com.liferay.portal.search.elasticsearch.query.FuzzyQueryTranslator; import com.liferay.portal.search.elasticsearch.query.MatchAllQueryTranslator; import com.liferay.portal.search.elasticsearch.query.MatchQueryTranslator; import com.liferay.portal.search.elasticsearch.query.MoreLikeThisQueryTranslator; import com.liferay.portal.search.elasticsearch.query.MultiMatchQueryTranslator; import com.liferay.portal.search.elasticsearch.query.NestedQueryTranslator; import com.liferay.portal.search.elasticsearch.query.StringQueryTranslator; import com.liferay.portal.search.elasticsearch.query.TermQueryTranslator; import com.liferay.portal.search.elasticsearch.query.TermRangeQueryTranslator; import com.liferay.portal.search.elasticsearch.query.WildcardQueryTranslator; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author André de Oliveira * @author Miguel Angelo Caldas Gallindo */ @Component( immediate = true, property = {"search.engine.impl=Elasticsearch"}, service = QueryTranslator.class ) public class ElasticsearchQueryTranslator implements QueryTranslator<QueryBuilder>, QueryVisitor<QueryBuilder> { @Override public QueryBuilder translate(Query query, SearchContext searchContext) { QueryBuilder queryBuilder = query.accept(this); if (queryBuilder == null) { queryBuilder = QueryBuilders.queryStringQuery(query.toString()); } return queryBuilder; } @Override public QueryBuilder visitQuery(BooleanQuery booleanQuery) { return booleanQueryTranslator.translate(booleanQuery, this); } @Override public QueryBuilder visitQuery(DisMaxQuery disMaxQuery) { return disMaxQueryTranslator.translate(disMaxQuery, this); } @Override public QueryBuilder visitQuery(FuzzyQuery fuzzyQuery) { return fuzzyQueryTranslator.translate(fuzzyQuery); } @Override public QueryBuilder visitQuery(MatchAllQuery matchAllQuery) { return matchAllQueryTranslator.translate(matchAllQuery); } @Override public QueryBuilder visitQuery(MatchQuery matchQuery) { return matchQueryTranslator.translate(matchQuery); } @Override public QueryBuilder visitQuery(MoreLikeThisQuery moreLikeThisQuery) { return moreLikeThisQueryTranslator.translate(moreLikeThisQuery); } @Override public QueryBuilder visitQuery(MultiMatchQuery multiMatchQuery) { return multiMatchQueryTranslator.translate(multiMatchQuery); } @Override public QueryBuilder visitQuery(NestedQuery nestedQuery) { return nestedQueryTranslator.translate(nestedQuery, this); } @Override public QueryBuilder visitQuery(StringQuery stringQuery) { return stringQueryTranslator.translate(stringQuery); } @Override public QueryBuilder visitQuery(TermQuery termQuery) { return termQueryTranslator.translate(termQuery); } @Override public QueryBuilder visitQuery(TermRangeQuery termRangeQuery) { return termRangeQueryTranslator.translate(termRangeQuery); } @Override public QueryBuilder visitQuery(WildcardQuery wildcardQuery) { return wildcardQueryTranslator.translate(wildcardQuery); } @Reference protected BooleanQueryTranslator booleanQueryTranslator; @Reference protected DisMaxQueryTranslator disMaxQueryTranslator; @Reference protected FuzzyQueryTranslator fuzzyQueryTranslator; @Reference protected MatchAllQueryTranslator matchAllQueryTranslator; @Reference protected MatchQueryTranslator matchQueryTranslator; @Reference protected MoreLikeThisQueryTranslator moreLikeThisQueryTranslator; @Reference protected MultiMatchQueryTranslator multiMatchQueryTranslator; @Reference protected NestedQueryTranslator nestedQueryTranslator; @Reference protected StringQueryTranslator stringQueryTranslator; @Reference protected TermQueryTranslator termQueryTranslator; @Reference protected TermRangeQueryTranslator termRangeQueryTranslator; @Reference protected WildcardQueryTranslator wildcardQueryTranslator; }