use of org.apache.solr.spelling.suggest.SolrSuggester in project SearchServices by Alfresco.
the class AsyncBuildSuggestComponent method getStatistics.
@Override
public NamedList<String> getStatistics() {
NamedList<String> stats = new SimpleOrderedMap<>();
stats.add("totalSizeInBytes", String.valueOf(ramBytesUsed()));
for (Map.Entry<String, SuggesterCache> entry : suggesters.entrySet()) {
SolrSuggester suggester = entry.getValue().get(entry.getKey());
stats.add(entry.getKey(), suggester.toString());
}
return stats;
}
use of org.apache.solr.spelling.suggest.SolrSuggester in project SearchServices by Alfresco.
the class AsyncBuildSuggestComponent method prepare.
/**
* Responsible for issuing build and rebload command to the specified {@link SolrSuggester}
*/
@Override
public void prepare(ResponseBuilder rb) throws IOException {
SolrParams params = rb.req.getParams();
LOG.debug("SuggestComponent prepare with : " + params);
if (!params.getBool(COMPONENT_NAME, false)) {
return;
}
boolean buildAll = params.getBool(SUGGEST_BUILD_ALL, false);
boolean reloadAll = params.getBool(SUGGEST_RELOAD_ALL, false);
final Collection<SolrSuggester> querysuggesters;
if (buildAll || reloadAll) {
Collection<SuggesterCache> suggesterCaches = suggesters.values();
querysuggesters = new ArrayList<SolrSuggester>(suggesterCaches.size());
for (SuggesterCache cache : suggesterCaches) {
querysuggesters.add(cache.get(ASYNC_CACHE_KEY));
}
} else {
querysuggesters = getSuggesters(params);
}
if (params.getBool(SUGGEST_BUILD, false) || buildAll) {
for (SolrSuggester suggester : querysuggesters) {
suggester.build(rb.req.getCore(), rb.req.getSearcher());
}
rb.rsp.add("command", (!buildAll) ? "build" : "buildAll");
} else if (params.getBool(SUGGEST_RELOAD, false) || reloadAll) {
for (SolrSuggester suggester : querysuggesters) {
reloadSuggester(suggester, rb.req.getCore(), rb.req.getSearcher());
}
rb.rsp.add("command", (!reloadAll) ? "reload" : "reloadAll");
}
}
use of org.apache.solr.spelling.suggest.SolrSuggester in project SearchServices by Alfresco.
the class AsyncBuildSuggestComponent method process.
/**
* Responsible for using the specified suggester to get the suggestions
* for the query and write the results
*/
@Override
public void process(ResponseBuilder rb) throws IOException {
SolrParams params = rb.req.getParams();
LOG.debug("SuggestComponent process with : " + params);
if (!params.getBool(COMPONENT_NAME, false) || suggesters.isEmpty()) {
return;
}
boolean buildAll = params.getBool(SUGGEST_BUILD_ALL, false);
boolean reloadAll = params.getBool(SUGGEST_RELOAD_ALL, false);
Set<SolrSuggester> querySuggesters;
try {
querySuggesters = getSuggesters(params);
} catch (IllegalArgumentException ex) {
if (!buildAll && !reloadAll) {
throw ex;
} else {
querySuggesters = new HashSet<>();
}
}
String query = params.get(SUGGEST_Q);
if (query == null) {
query = rb.getQueryString();
if (query == null) {
query = params.get(CommonParams.Q);
}
}
if (query != null) {
int count = params.getInt(SUGGEST_COUNT, 1);
boolean highlight = params.getBool(SUGGEST_HIGHLIGHT, false);
boolean allTermsRequired = params.getBool(SUGGEST_ALL_TERMS_REQUIRED, true);
String contextFilter = params.get(SUGGEST_CONTEXT_FILTER_QUERY);
if (contextFilter != null) {
contextFilter = contextFilter.trim();
if (contextFilter.length() == 0) {
contextFilter = null;
}
}
SuggesterOptions options = new SuggesterOptions(new CharsRef(query), count, contextFilter, allTermsRequired, highlight);
Map<String, SimpleOrderedMap<NamedList<Object>>> namedListResults = new HashMap<>();
for (SolrSuggester suggester : querySuggesters) {
SuggesterResult suggesterResult = suggester.getSuggestions(options);
toNamedList(suggesterResult, namedListResults);
}
rb.rsp.add(SuggesterResultLabels.SUGGEST, namedListResults);
}
}
Aggregations