@Override public List<String> performSearch(FulltextSearchQuery searchQuery, String... excluded) { FulltextSearchResults searchResults = indexService.performSearch(searchQuery); FieldFacetResult facetResult = searchResults.getFacetResult() .getFieldFacetResult(PublicationIndexFieldConstants.FIELD_DATASET); List<String> results = new ArrayList<String>(); for (Map.Entry<String, Long> entry : facetResult.getValues().entrySet()) { if ( ! ArrayUtils.contains(excluded, entry.getKey())) { results.add(entry.getKey().toLowerCase()); } } return results; }
public Map<String, Long> getFieldFacetResult(String field) { Map<String, Long> result = Collections.emptyMap(); FacetResult facetResult = fulltextSearchResults.getFacetResult(); if (result != null) { FieldFacetResult fieldFacet = facetResult.getFieldFacetResult(field); if (fieldFacet != null) { result = fieldFacet.getValues(); } } return result; }
private Map<String, WeightedElement<String>> getElementsFromIndex(String facetField, String queryField, SearchCriterion criterion, SuggestionsQuery query) { Map<String, WeightedElement<String>> elements = new HashMap<>(); FulltextSearchResults result = getFacet(facetField, criterion, query); FacetResult facetResult = result.getFacetResult(); FieldFacetResult fieldFacetResult = facetResult.getFieldFacetResult(facetField); int size = result.getCount(); int weightMultiplier = QUERY_FIELD_MULTIPLIERS.get(queryField); for (Entry<String, Long> facetEntry : fieldFacetResult.getValues().entrySet()) { double ratio = ((double) facetEntry.getValue()) / size; WeightedElement<String> element = new WeightedElement<String>(facetEntry.getKey(), (int) (ratio * weightMultiplier)); elements.put(element.getValue(), element); } return elements; }
private void tryFacet() { int batchSize = 1; ResultsFormat resultsFormat = new ResultsFormat(new FieldRequest(pl.edu.icm.synat.logic.index.publication.CollectionIndexFieldConstants.FIELD_EXID, true)); FulltextSearchQuery searchQuery = null; searchQuery = new FulltextSearchQuery(0, batchSize, resultsFormat, new FieldCriterion("*", "*", SearchOperator.AND)); Facet facet = new Facet(); facet.addFieldFacet(PublicationIndexFieldConstants.FIELD_TYPE); searchQuery.setFacet(facet); FulltextSearchResults searchResults = indexService.performSearch(searchQuery); FieldFacetResult facetResult = searchResults.getFacetResult().getFieldFacetResult(PublicationIndexFieldConstants.FIELD_TYPE); Set<Entry<String,Long>> entrySet = facetResult.getValues().entrySet(); for (Entry<String, Long> entry : entrySet) { System.out.println("["+entry.getKey()+"]="+entry.getValue()); } }
@Override public SearchResultsProto convertFrom(final FulltextSearchResults fromObject) { Builder builder = SearchResultsProto.newBuilder(); builder.setCount(fromObject.getCount()); builder.setFirst(fromObject.getFirst()); for (FulltextSearchResult singleSearchResult : fromObject.getResults()) { SearchResultProto resultProto = transformSingleResult(singleSearchResult); builder.addResults(resultProto); } builder.setFacetResult(transformFacetResult(fromObject.getFacetResult())); return builder.build(); }