/**
* 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.suggest;
import com.liferay.portal.kernel.search.suggest.TermSuggester;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.search.elasticsearch.suggest.TermSuggesterTranslator;
import org.elasticsearch.search.suggest.SuggestBuilder;
import org.elasticsearch.search.suggest.SuggestBuilders;
import org.elasticsearch.search.suggest.term.TermSuggestionBuilder;
import org.osgi.service.component.annotations.Component;
/**
* @author Michael C. Han
*/
@Component(immediate = true, service = TermSuggesterTranslator.class)
public class TermSuggesterTranslatorImpl
extends BaseSuggesterTranslatorImpl implements TermSuggesterTranslator {
@Override
public SuggestBuilder translate(TermSuggester termSuggester) {
SuggestBuilder suggestBuilder = new SuggestBuilder(
termSuggester.getName());
TermSuggestionBuilder termSuggesterBuilder =
SuggestBuilders.termSuggestion(termSuggester.getName());
termSuggesterBuilder.field(termSuggester.getField());
if (Validator.isNotNull(termSuggester.getAnalyzer())) {
termSuggesterBuilder.analyzer(termSuggester.getAnalyzer());
}
if (termSuggester.getAccuracy() != null) {
termSuggesterBuilder.setAccuracy(termSuggester.getAccuracy());
}
if (termSuggester.getMaxEdits() != null) {
termSuggesterBuilder.maxEdits(termSuggester.getMaxEdits());
}
if (termSuggester.getMaxInspections() != null) {
termSuggesterBuilder.maxInspections(
termSuggester.getMaxInspections());
}
if (termSuggester.getMaxTermFreq() != null) {
termSuggesterBuilder.maxTermFreq(termSuggester.getMaxTermFreq());
}
if (termSuggester.getMinWordLength() != null) {
termSuggesterBuilder.minWordLength(
termSuggester.getMinWordLength());
}
if (termSuggester.getMinDocFreq() != null) {
termSuggesterBuilder.minDocFreq(termSuggester.getMinDocFreq());
}
if (termSuggester.getPrefixLength() != null) {
termSuggesterBuilder.prefixLength(termSuggester.getPrefixLength());
}
if (termSuggester.getShardSize() != null) {
termSuggesterBuilder.shardSize(termSuggester.getShardSize());
}
if (termSuggester.getSize() != null) {
termSuggesterBuilder.size(termSuggester.getSize());
}
if (termSuggester.getSort() != null) {
termSuggesterBuilder.sort(translate(termSuggester.getSort()));
}
if (termSuggester.getStringDistance() != null) {
termSuggesterBuilder.stringDistance(
translate(termSuggester.getStringDistance()));
}
if (termSuggester.getSuggestMode() != null) {
termSuggesterBuilder.suggestMode(
translate(termSuggester.getSuggestMode()));
}
termSuggesterBuilder.text(termSuggester.getValue());
suggestBuilder.addSuggestion(termSuggesterBuilder);
return suggestBuilder;
}
}