searchQuery, searchContext, Field.ASSET_CATEGORY_TITLES, false); searchQuery.addExactTerm(Field.ASSET_TAG_NAMES, keywords); searchQuery.addTerms(Field.KEYWORDS, keywords); fullQuery.setPreBooleanFilter(fullQueryBooleanFilter); if (searchQuery.hasClauses()) { fullQuery.add(searchQuery, BooleanClauseOccur.MUST); fullQuery.add( booleanClause.getClause(), booleanClause.getBooleanClauseOccur());
protected void addSearchExpandoKeywords( BooleanQuery searchQuery, SearchContext searchContext, String keywords, String className) throws Exception { ExpandoBridge expandoBridge = ExpandoBridgeFactoryUtil.getExpandoBridge( searchContext.getCompanyId(), className); Set<String> attributeNames = SetUtil.fromEnumeration( expandoBridge.getAttributeNames()); for (String attributeName : attributeNames) { UnicodeProperties properties = expandoBridge.getAttributeProperties( attributeName); int indexType = GetterUtil.getInteger( properties.getProperty(ExpandoColumnConstants.INDEX_TYPE)); if (indexType != ExpandoColumnConstants.INDEX_TYPE_NONE) { String fieldName = getExpandoFieldName( searchContext, expandoBridge, attributeName); if (searchContext.isAndSearch()) { searchQuery.addRequiredTerm(fieldName, keywords); } else { searchQuery.addTerm(fieldName, keywords); } } } }
/** * @deprecated As of Wilberforce (7.0.x) */ @Deprecated protected void addFacetClause( SearchContext searchContext, BooleanFilter facetBooleanFilter, Collection<Facet> facets) throws ParseException { BooleanQuery facetBooleanQuery = new BooleanQueryImpl(); for (Facet facet : facets) { BooleanClause<Query> facetBooleanClause = facet.getFacetClause(); if (facetBooleanClause != null) { facetBooleanQuery.add( facetBooleanClause.getClause(), facetBooleanClause.getBooleanClauseOccur()); } } if (!facetBooleanQuery.hasClauses()) { return; } QueryFilter queryFilter = new QueryFilter(facetBooleanQuery); facetBooleanFilter.add(queryFilter, BooleanClauseOccur.MUST); }
fullBooleanQuery.setPreBooleanFilter(fullQueryBooleanFilter); if (searchQuery.hasClauses()) { fullBooleanQuery.add(searchQuery, BooleanClauseOccur.MUST); fullBooleanQuery.add( booleanClause.getClause(), booleanClause.getBooleanClauseOccur());
BooleanQuery localizedQuery = new BooleanQueryImpl(); Query query = localizedQuery.addTerm(field, value, like); Query localizedFieldQuery = localizedQuery.addTerm( localizedField, value, like); searchQuery.add(localizedQuery, booleanClauseOccur); Query query = searchQuery.addTerm(localizedField, value, like);
private void _add( BooleanQuery booleanQuery, Query query, BooleanClauseOccur booleanClauseOccur) { try { booleanQuery.add(query, booleanClauseOccur); } catch (ParseException pe) { throw new SystemException(pe); } }
protected void contribute( String attributeName, ExpandoBridge expandoBridge) { UnicodeProperties properties = expandoBridge.getAttributeProperties( attributeName); int indexType = GetterUtil.getInteger( properties.getProperty(ExpandoColumnConstants.INDEX_TYPE)); if (indexType == ExpandoColumnConstants.INDEX_TYPE_NONE) { return; } String fieldName = getExpandoFieldName(attributeName, expandoBridge); boolean like = false; if (indexType == ExpandoColumnConstants.INDEX_TYPE_TEXT) { like = true; } if (_andSearch) { _booleanQuery.addRequiredTerm(fieldName, _keywords, like); } else { _addTerm(_booleanQuery, fieldName, _keywords, like); } }
protected BooleanQuery createFullQuery( BooleanFilter fullQueryBooleanFilter, SearchContext searchContext) { BooleanQuery booleanQuery = new BooleanQueryImpl(); if (fullQueryBooleanFilter.hasClauses()) { booleanQuery.setPreBooleanFilter(fullQueryBooleanFilter); } BooleanQuery keywordBooleanQuery = createKeywordQuery( fullQueryBooleanFilter, searchContext); if (keywordBooleanQuery.hasClauses()) { _add(booleanQuery, keywordBooleanQuery, BooleanClauseOccur.MUST); } BooleanClause<Query>[] booleanClauses = searchContext.getBooleanClauses(); if (booleanClauses != null) { for (BooleanClause<Query> booleanClause : booleanClauses) { _add( booleanQuery, booleanClause.getClause(), booleanClause.getBooleanClauseOccur()); } } postProcessFullQuery(booleanQuery, searchContext); return booleanQuery; }
@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); }
private Query _addTerm( BooleanQuery booleanQuery, String fieldName, String keywords, boolean like) { try { return booleanQuery.addTerm(fieldName, keywords, like); } catch (ParseException pe) { throw new RuntimeException(pe); } }
/** * @deprecated As of Wilberforce (7.0.x), added strictly to support * backwards compatibility of {@link * Indexer#postProcessContextQuery(BooleanQuery, SearchContext)} */ @Deprecated protected void postProcessContextQuery( BooleanFilter entityFilter, SearchContext searchContext, Indexer<?> indexer) throws Exception { BooleanQuery entityBooleanQuery = new BooleanQueryImpl(); indexer.postProcessContextQuery(entityBooleanQuery, searchContext); for (IndexerPostProcessor indexerPostProcessor : indexer.getIndexerPostProcessors()) { indexerPostProcessor.postProcessContextQuery( entityBooleanQuery, searchContext); } if (entityBooleanQuery.hasClauses()) { QueryFilter queryFilter = new QueryFilter(entityBooleanQuery); entityFilter.add(queryFilter, BooleanClauseOccur.MUST); } }
fullQuery.setPreBooleanFilter(fullQueryBooleanFilter); if (searchQuery.hasClauses()) { fullQuery.add(searchQuery, BooleanClauseOccur.MUST); fullQuery.add( booleanClause.getClause(), booleanClause.getBooleanClauseOccur());
@Override public void contribute( String keywords, BooleanQuery booleanQuery, KeywordQueryContributorHelper keywordQueryContributorHelper) { if (Validator.isBlank(keywords)) { return; } for (String field : _ALWAYS_PRESENT_FIELDS) { Query query = fieldQueryFactory.createQuery( field, keywords, false, false); try { booleanQuery.add(query, BooleanClauseOccur.SHOULD); } catch (ParseException pe) { throw new SystemException(pe); } } }
@Override public QueryFilter createFieldValueQueryFilter( String ddmStructureFieldName, Serializable ddmStructureFieldValue, Locale locale) throws Exception { BooleanQuery booleanQuery = new BooleanQueryImpl(); String[] ddmStructureFieldNameParts = StringUtil.split( ddmStructureFieldName, DDMIndexer.DDM_FIELD_SEPARATOR); DDMStructure structure = _ddmStructureLocalService.getStructure( GetterUtil.getLong(ddmStructureFieldNameParts[2])); String fieldName = StringUtil.replaceLast( ddmStructureFieldNameParts[3], StringPool.UNDERLINE.concat(LocaleUtil.toLanguageId(locale)), StringPool.BLANK); if (structure.hasField(fieldName)) { ddmStructureFieldValue = _ddm.getIndexedFieldValue( ddmStructureFieldValue, structure.getFieldType(fieldName)); } booleanQuery.addRequiredTerm( ddmStructureFieldName, StringPool.QUOTE + ddmStructureFieldValue + StringPool.QUOTE); return new QueryFilter(booleanQuery); }
fullQueryBooleanFilter, searchContext); fullQuery.setQueryConfig(searchContext.getQueryConfig());
/** * @deprecated As of Wilberforce (7.0.x), added strictly to support * backwards compatibility of {@link * Indexer#postProcessContextQuery(BooleanQuery, SearchContext)} */ @Deprecated protected void postProcessContextQuery( BooleanFilter relatedBooleanFilter, SearchContext searchContext, Indexer<?> indexer) throws Exception { BooleanQuery entityQuery = new BooleanQueryImpl(); indexer.postProcessContextQuery(entityQuery, searchContext); for (IndexerPostProcessor indexerPostProcessor : indexer.getIndexerPostProcessors()) { indexerPostProcessor.postProcessContextQuery( entityQuery, searchContext); } if (entityQuery.hasClauses()) { QueryFilter queryFilter = new QueryFilter(entityQuery); relatedBooleanFilter.add(queryFilter, BooleanClauseOccur.MUST); } }
query = searchQuery.addRequiredTerm(field, value, like); query = searchQuery.addTerm(field, value, like);
private void _addSearchKeywords( BooleanQuery booleanQuery, boolean luceneSyntax, Map<String, Indexer<?>> entryClassNameIndexerMap, SearchContext searchContext) throws Exception { String keywords = searchContext.getKeywords(); if (luceneSyntax) { if (!Validator.isBlank(keywords)) { booleanQuery.add( new StringQuery(keywords), BooleanClauseOccur.MUST); } } else { _expandoQueryContributor.contribute( keywords, booleanQuery, ArrayUtil.toStringArray(entryClassNameIndexerMap.keySet()), searchContext); } }
@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); } }
query = searchQuery.addRequiredTerm(field, value, like); query = searchQuery.addTerm(field, value, like);