try { final List<String> l = solrSuggestions.get(key).getAlternatives(); suggestions.put(key, l); } catch (JSONException e) {
static Map<String, List<Alternative>> extreactSuggestions(QueryResponse response) { if (response == null || response.getSpellCheckResponse() == null || response.getSpellCheckResponse().getSuggestions() == null) { return Collections.emptyMap(); } Map<String, List<Alternative>> alternativesMap = new LinkedHashMap<>(); SpellCheckResponse scr = response.getSpellCheckResponse(); if (scr != null && scr.getSuggestions() != null) { for (SpellCheckResponse.Suggestion suggestion : scr.getSuggestions()) { List<Alternative> alternatives = new ArrayList<>(); if (!CollectionUtils.isEmpty(suggestion.getAlternatives())) { for (int i = 0; i < suggestion.getAlternatives().size(); i++) { alternatives.add(new Alternative(suggestion.getToken(), suggestion.getOriginalFrequency(), suggestion.getAlternatives().get(i), suggestion.getAlternativeFrequencies().get(i))); } } alternativesMap.put(suggestion.getToken(), alternatives); } } return alternativesMap; }
List<SpellCheckResponse.Suggestion> suggestions = spellCheckResponse.getSuggestions(); for (SpellCheckResponse.Suggestion suggestion : suggestions) { spellingSuggestionsByToken.put(suggestion.getToken(), suggestion.getAlternatives());
String n = sugg.getName(i); @SuppressWarnings("unchecked") Suggestion s = new Suggestion(n, (NamedList<Object>) sugg.getVal(i)); suggestionMap.put(n, s); suggestions.add(s);
String n = sugg.getName(i); @SuppressWarnings("unchecked") Suggestion s = new Suggestion(n, (NamedList<Object>) sugg.getVal(i)); suggestionMap.put(n, s); suggestions.add(s);
SpellCheckResponse spellCheckResp = new SpellCheckResponse(nl); for (SpellCheckResponse.Suggestion suggestion : spellCheckResp.getSuggestions()) { mergeData.origVsSuggestion.put(suggestion.getToken(), suggestion); HashSet<String> suggested = mergeData.origVsSuggested.get(suggestion.getToken()); if (suggested == null) { suggested = new HashSet<String>(); mergeData.origVsSuggested.put(suggestion.getToken(), suggested); Integer o = mergeData.origVsFreq.get(suggestion.getToken()); if (o != null) origFreq += o; origFreq += suggestion.getOriginalFrequency(); mergeData.origVsFreq.put(suggestion.getToken(), origFreq); Integer origShards = mergeData.origVsShards.get(suggestion.getToken()); if(origShards==null) { mergeData.origVsShards.put(suggestion.getToken(), 1); } else { mergeData.origVsShards.put(suggestion.getToken(), ++origShards); for (int i = 0; i < suggestion.getNumFound(); i++) { String alternative = suggestion.getAlternatives().get(i); suggested.add(alternative); SuggestWord sug = mergeData.suggestedVsWord.get(alternative); if (suggestion.getAlternativeFrequencies() != null && suggestion.getAlternativeFrequencies().size() > 0) { Integer freq = suggestion.getAlternativeFrequencies().get(i); if (freq != null) sug.freq += freq;
private void putSpellChecks(SpellCheckResponse spellCheckResponse, final Deque<SolrResultRow> queue, Filter filter, OakSolrConfiguration configuration, SolrClient solrServer) throws IOException, SolrServerException { List<SpellCheckResponse.Suggestion> suggestions = spellCheckResponse.getSuggestions(); Collection<String> alternatives = new ArrayList<String>(suggestions.size()); for (SpellCheckResponse.Suggestion suggestion : suggestions) { alternatives.addAll(suggestion.getAlternatives()); } // ACL filter spellcheck results for (String alternative : alternatives) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("q", alternative); solrQuery.setParam("df", configuration.getCatchAllField()); solrQuery.setParam("q.op", "AND"); solrQuery.setParam("rows", "100"); QueryResponse suggestQueryResponse = solrServer.query(solrQuery); SolrDocumentList results = suggestQueryResponse.getResults(); if (results != null && results.getNumFound() > 0) { for (SolrDocument doc : results) { if (filter.isAccessible(String.valueOf(doc.getFieldValue(configuration.getPathField())))) { queue.add(new SolrResultRow(alternative)); break; } } } } }
private void putSpellChecks(SpellCheckResponse spellCheckResponse, final Deque<SolrResultRow> queue, Filter filter, OakSolrConfiguration configuration, SolrClient solrServer) throws IOException, SolrServerException { List<SpellCheckResponse.Suggestion> suggestions = spellCheckResponse.getSuggestions(); Collection<String> alternatives = new ArrayList<String>(suggestions.size()); for (SpellCheckResponse.Suggestion suggestion : suggestions) { alternatives.addAll(suggestion.getAlternatives()); } // ACL filter spellcheck results for (String alternative : alternatives) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("q", alternative); solrQuery.setParam("df", configuration.getCatchAllField()); solrQuery.setParam("q.op", "AND"); solrQuery.setParam("rows", "100"); QueryResponse suggestQueryResponse = solrServer.query(solrQuery); SolrDocumentList results = suggestQueryResponse.getResults(); if (results != null && results.getNumFound() > 0) { for (SolrDocument doc : results) { if (filter.isAccessible(String.valueOf(doc.getFieldValue(configuration.getPathField())))) { queue.add(new SolrResultRow(alternative)); break; } } } } }
/** * @see org.opencms.jsp.search.result.I_CmsSearchResultWrapper#getDidYouMeanSuggestion() */ public Suggestion getDidYouMeanSuggestion() { I_CmsSearchControllerDidYouMean didYouMeanController = getController().getDidYouMean(); Suggestion usedSuggestion = null; if ((null != didYouMeanController) && ((m_solrResultList != null) && (m_solrResultList.getSpellCheckResponse() != null))) { // find most suitable suggestion List<Suggestion> suggestionList = m_solrResultList.getSpellCheckResponse().getSuggestions(); int queryLength = m_controller.getDidYouMean().getState().getQuery().length(); int minDistance = queryLength + 1; for (Suggestion suggestion : suggestionList) { int currentDistance = Math.abs(queryLength - suggestion.getToken().length()); if (currentDistance < minDistance) { usedSuggestion = suggestion; minDistance = currentDistance; } } } return usedSuggestion; }
@Override public SuggestionResults fetchSuggections(final SolrIndex<FulltextIndexSchema> index, final String query) { SolrQuery params = new SolrQuery(); params.set(PARAM_QT, "/suggest"); params.set(PARAM_QUERY, query); params.set(PARAM_SPELLCHECK, "true"); QueryResponse response = null; try { response = index.query(params); } catch (final SearchParserException spe) { log.debug("Error in query {}", query, spe); throw new SearchException("Error in query " + query, spe); } final SpellCheckResponse spellCheckResponse = response.getSpellCheckResponse(); if (spellCheckResponse == null) { return new SuggestionResults(); } final Suggestion suggestion = spellCheckResponse.getSuggestion(query); if (suggestion == null) { return new SuggestionResults(); } List<SuggestionResult> alternatives = new ArrayList<SuggestionResult>(); for (String token : suggestion.getAlternatives()) { alternatives.add(new SuggestionResult(token)); } return new SuggestionResults(suggestion.getNumFound(), suggestion.getOriginalFrequency(), alternatives); }
public SpellCheckResponse(NamedList<Object> spellInfo) { NamedList<Object> sugg = (NamedList<Object>) spellInfo.get("suggestions"); if (sugg == null) { correctlySpelled = true; return; } for (int i = 0; i < sugg.size(); i++) { String n = sugg.getName(i); if ("correctlySpelled".equals(n)) { correctlySpelled = (Boolean) sugg.getVal(i); } else if ("collation".equals(n)) { collation = (String) sugg.getVal(i); } else { Suggestion s = new Suggestion(n, (NamedList<Object>) sugg.getVal(i)); suggestionMap.put(n, s); suggestions.add(s); } } }
public String getFirstSuggestion(String token) { Suggestion s = suggestionMap.get(token); if (s==null || s.getAlternatives().isEmpty()) return null; return s.getAlternatives().get(0); }
public String getFirstSuggestion(String token) { Suggestion s = suggestionMap.get(token); if (s==null || s.getAlternatives().isEmpty()) return null; return s.getAlternatives().get(0); }
public String getFirstSuggestion(String token) { Suggestion s = suggestionMap.get(token); if (s==null || s.getAlternatives().isEmpty()) return null; return s.getAlternatives().get(0); }