WorkflowConstants.STATUS_APPROVED); Document[] documents = hits.getDocs(); scores.add(hits.score(i)); hits.setDocs(docs.toArray(new Document[docs.size()])); hits.setScores(ArrayUtil.toFloatArray(scores)); hits.setSearchTime( (float)(System.currentTimeMillis() - hits.getStart()) / Time.SECOND); hits.setLength(hits.getLength() - excludeDocs.size());
@Override public void copy(Hits hits) { setDocs(hits.getDocs()); setLength(hits.getLength()); setQuery(hits.getQuery()); setQuerySuggestions(hits.getQuerySuggestions()); setQueryTerms(hits.getQueryTerms()); setScores(hits.getScores()); setSearchTime(hits.getSearchTime()); setSnippets(hits.getSnippets()); setSpellCheckResults(hits.getSpellCheckResults()); setStart(hits.getStart()); }
private Hits _getHits() { Hits hits = new HitsImpl(); hits.setCollatedSpellCheckResult(StringPool.BLANK); hits.setDocs(new Document[0]); hits.setLength(0); hits.setQuery(new StringQuery(StringPool.BLANK)); hits.setQuerySuggestions(new String[0]); hits.setQueryTerms(new String[0]); hits.setLength(0); hits.setScores(new float[0]); hits.setSearchTime(0); hits.setSnippets(new String[0]); hits.setSpellCheckResults(_spellCheckResults); hits.setStart(0); return hits; }
protected void updateHits( Hits hits, List<Document> documents, List<Float> scores, int start, int end, int size, long startTime) { int[] startAndEnd = SearchPaginationUtil.calculateStartAndEnd( start, end, documents.size()); start = startAndEnd[0]; end = startAndEnd[1]; documents = documents.subList(start, end); scores = scores.subList(start, end); hits.setDocs(documents.toArray(new Document[documents.size()])); hits.setScores(ArrayUtil.toFloatArray(scores)); hits.setLength(size); hits.setSearchTime( (float)(System.currentTimeMillis() - startTime) / Time.SECOND); }
@Override public long searchCount(SearchContext searchContext) throws SearchException { PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); if ((permissionChecker != null) && isUseSearchResultPermissionFilter(searchContext)) { Hits hits = search(searchContext); return hits.getLength(); } QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setHighlightEnabled(false); queryConfig.setHitsProcessingEnabled(false); queryConfig.setScoreEnabled(false); queryConfig.setQueryIndexingEnabled(false); queryConfig.setQuerySuggestionEnabled(false); searchContext.setSearchEngineId(getSearchEngineId()); BooleanQuery fullQuery = getFullQuery(searchContext); fullQuery.setQueryConfig(queryConfig); return IndexSearcherHelperUtil.searchCount(searchContext, fullQuery); }
String[] queryTerms = results.getQueryTerms(); int total = results.getLength(); Element root = (Element)values[1]; Document[] docs = results.getDocs(); Document result = results.doc(i); double score = results.score(i);
@Override public boolean process(SearchContext searchContext, Hits hits) throws SearchException { if (hits.getLength() > 0) { return true; } Map<String, List<String>> spellCheckResults = hits.getSpellCheckResults(); if (spellCheckResults == null) { return true; } FacetedSearcher facetedSearcher = facetedSearcherManager.createFacetedSearcher(); String spellCheckedKeywords = hits.getCollatedSpellCheckResult(); searchContext.overrideKeywords(spellCheckedKeywords); String[] querySuggestions = IndexSearcherHelperUtil.suggestKeywordQueries(searchContext, 5); if (ArrayUtil.isNotEmpty(querySuggestions)) { searchContext.setKeywords(querySuggestions[0]); } QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setHitsProcessingEnabled(false); Hits alternateResults = facetedSearcher.search(searchContext); hits.copy(alternateResults); return true; }
@Override public boolean process(SearchContext searchContext, Hits hits) throws SearchException { QueryConfig queryConfig = searchContext.getQueryConfig(); if (!queryConfig.isCollatedSpellCheckResultEnabled()) { return true; } int collatedSpellCheckResultScoresThreshold = queryConfig.getCollatedSpellCheckResultScoresThreshold(); if (hits.getLength() >= collatedSpellCheckResultScoresThreshold) { return true; } String collatedKeywords = IndexSearcherHelperUtil.spellCheckKeywords( searchContext); if (collatedKeywords.equals(searchContext.getKeywords())) { collatedKeywords = StringPool.BLANK; } hits.setCollatedSpellCheckResult(collatedKeywords); return true; }
@Override public boolean process(SearchContext searchContext, Hits hits) throws SearchException { QueryConfig queryConfig = searchContext.getQueryConfig(); if (!queryConfig.isQuerySuggestionEnabled()) { return true; } if (hits.getLength() >= queryConfig.getQuerySuggestionScoresThreshold()) { return true; } String[] querySuggestions = IndexSearcherHelperUtil.suggestKeywordQueries( searchContext, queryConfig.getQuerySuggestionMax()); querySuggestions = ArrayUtil.remove( querySuggestions, searchContext.getKeywords()); hits.setQuerySuggestions(querySuggestions); return true; }
for (Document document : hits.getDocs()) { try { SearchResult searchResult =
protected BaseModelSearchResult<JournalArticle> searchJournalArticles( SearchContext searchContext) throws PortalException { Indexer<JournalArticle> indexer = IndexerRegistryUtil.nullSafeGetIndexer(JournalArticle.class); for (int i = 0; i < 10; i++) { Hits hits = indexer.search( searchContext, JournalUtil.SELECTED_FIELD_NAMES); List<JournalArticle> articles = _journalHelper.getArticles(hits); if (articles != null) { return new BaseModelSearchResult<>(articles, hits.getLength()); } } throw new SearchException( "Unable to fix the search index after 10 attempts"); }
protected void updateHits(Hits hits, int size, long startTime) { hits.setDocs(documents.toArray(new Document[documents.size()])); hits.setScores(ArrayUtil.toFloatArray(scores)); hits.setLength(size); hits.setSearchTime( (float)(System.currentTimeMillis() - startTime) / Time.SECOND); }
WorkflowConstants.STATUS_APPROVED); Document[] documents = hits.getDocs(); scores.add(hits.score(i)); hits.setDocs(docs.toArray(new Document[docs.size()])); hits.setScores(ArrayUtil.toFloatArray(scores)); hits.setSearchTime( (float)(System.currentTimeMillis() - hits.getStart()) / Time.SECOND); hits.setLength(hits.getLength() - excludeDocs.size());
@Override public BaseModelSearchResult<DDMFormInstanceRecord> searchFormInstanceRecords(SearchContext searchContext) { try { Indexer<DDMFormInstanceRecord> indexer = getDDMFormInstanceRecordIndexer(); Hits hits = indexer.search(searchContext, _SELECTED_FIELD_NAMES); List<DDMFormInstanceRecord> formInstanceRecords = getFormInstanceRecords(hits); return new BaseModelSearchResult<>( formInstanceRecords, hits.getLength()); } catch (Exception e) { throw new SystemException(e); } }
@Override public boolean process(SearchContext searchContext, Hits hits) throws SearchException { QueryConfig queryConfig = searchContext.getQueryConfig(); if (!queryConfig.isQueryIndexingEnabled()) { return true; } if (hits.getLength() >= queryConfig.getQueryIndexingThreshold()) { addDocument( searchContext.getCompanyId(), searchContext.getKeywords(), searchContext.getLocale()); } return true; }
@Override public long searchCount(SearchContext searchContext) { PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); if ((permissionChecker != null) && _indexerPermissionPostFilter.isPermissionAware()) { Hits hits = search(searchContext); return hits.getLength(); } QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setHighlightEnabled(false); queryConfig.setHitsProcessingEnabled(false); queryConfig.setScoreEnabled(false); queryConfig.setQueryIndexingEnabled(false); queryConfig.setQuerySuggestionEnabled(false); searchContext.setSearchEngineId( _modelSearchSettings.getSearchEngineId()); BooleanQuery fullQuery = _indexerQueryBuilder.getQuery(searchContext); fullQuery.setQueryConfig(queryConfig); try { return _indexSearcherHelper.searchCount(searchContext, fullQuery); } catch (SearchException se) { throw new RuntimeException(se); } }