
org.codelibs.elasticsearch.dynarank.DynamicRankingPlugin Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of elasticsearch-dynarank Show documentation
Show all versions of elasticsearch-dynarank Show documentation
This plugin provides a feature to re-rank a search result at the search time.
The newest version!
package org.codelibs.elasticsearch.dynarank;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.codelibs.elasticsearch.dynarank.filter.SearchActionFilter;
import org.codelibs.elasticsearch.dynarank.ranker.DynamicRanker;
import org.codelibs.elasticsearch.dynarank.script.DiversitySortScriptEngine;
import org.codelibs.elasticsearch.dynarank.script.DynaRankScript;
import org.elasticsearch.action.support.ActionFilter;
import org.elasticsearch.common.component.LifecycleComponent;
import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.plugins.ActionPlugin;
import org.elasticsearch.plugins.Plugin;
import org.elasticsearch.plugins.ScriptPlugin;
import org.elasticsearch.rest.RestHeaderDefinition;
import org.elasticsearch.script.ScriptContext;
import org.elasticsearch.script.ScriptEngine;
public class DynamicRankingPlugin extends Plugin implements ActionPlugin, ScriptPlugin {
private Settings settings;
public DynamicRankingPlugin(final Settings settings) {
this.settings = settings;
}
@Override
public ScriptEngine getScriptEngine(Settings settings, Collection> contexts) {
return new DiversitySortScriptEngine(settings);
}
@Override
public List getActionFilters() {
return Arrays.asList(new SearchActionFilter(settings));
}
@Override
public Collection getRestHeaders() {
return Arrays.asList(
new RestHeaderDefinition(DynamicRanker.DYNARANK_RERANK_ENABLE,
false),
new RestHeaderDefinition(DynamicRanker.DYNARANK_MIN_TOTAL_HITS,
false));
}
@Override
public Collection> getGuiceServiceClasses() {
final Collection> services = new ArrayList<>();
services.add(DynamicRanker.class);
return services;
}
@Override
public List> getContexts() {
return Arrays.asList(DynaRankScript.CONTEXT);
}
@Override
public List> getSettings() {
return Arrays.asList(//
DynamicRanker.SETTING_INDEX_DYNARANK_SCRIPT, //
DynamicRanker.SETTING_INDEX_DYNARANK_LANG, //
DynamicRanker.SETTING_INDEX_DYNARANK_TYPE, //
DynamicRanker.SETTING_INDEX_DYNARANK_PARAMS, //
DynamicRanker.SETTING_INDEX_DYNARANK_REORDER_SIZE, //
DynamicRanker.SETTING_INDEX_DYNARANK_KEEP_TOPN, //
DynamicRanker.SETTING_DYNARANK_CACHE_CLEAN_INTERVAL, //
DynamicRanker.SETTING_DYNARANK_CACHE_EXPIRE //
);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy