/** * Default constructor, used to instantiate the search facility as a bean.<p> */ public CmsSearch() { m_parameters = new CmsSearchParameters(); m_parameters.setSearchRoots(""); m_parameters.setSearchPage(1); m_searchResultCount = 0; m_parameters.setSort(CmsSearchParameters.SORT_DEFAULT); m_parameters.setFields(Arrays.asList(CmsSearchIndex.DOC_META_FIELDS)); m_parsedQuerySet = false; }
/** * Default constructor.<p> * * @param currentFolder the current folder */ public CmsSearchWorkplaceBean(String currentFolder) { m_fields = CmsStringUtil.collectionAsString(new CmsSearchParameters().getFields(), ","); m_sortOrder = CmsSearchParameters.SORT_NAMES[0]; m_currentFolder = currentFolder; }
/** * Sets the creation date the resources have to have as maximum.<p> * * @param maxCreationDate the creation date the resources have to have as maximum to set */ public void setMaxDateCreated(String maxCreationDate) { if ((CmsStringUtil.isNotEmptyOrWhitespaceOnly(maxCreationDate)) && (!maxCreationDate.equals("0"))) { m_searchParams.setMaxDateCreated(Long.parseLong(maxCreationDate)); } else { m_searchParams.setMaxDateCreated(Long.MAX_VALUE); } }
/** * Returns the list of categories to limit the search to.<p> * * @return the list of categories to limit the search to */ public String getSearchCategories() { return toSeparatedString(getCategories(), ','); }
/** * Returns a new search parameters object from the request parameters.<p> * * @param params the parameter map * * @return a search parameters object */ private CmsSearchParameters getSearchParameters(Map params) { CmsSearchParameters searchParams = new CmsSearchParameters(); searchParams.setQuery((String)params.get(PARAM_QUERY)); if (CmsStringUtil.isNotEmptyOrWhitespaceOnly((String)params.get(PARAM_SORT))) { searchParams.setSortName((String)params.get(PARAM_SORT)); } if (CmsStringUtil.isNotEmptyOrWhitespaceOnly((String)params.get(PARAM_MINCREATIONDATE))) { searchParams.setMinDateCreated(Long.parseLong((String)params.get(PARAM_MINCREATIONDATE))); } if (CmsStringUtil.isNotEmptyOrWhitespaceOnly((String)params.get(PARAM_MAXCREATIONDATE))) { searchParams.setMaxDateCreated(Long.parseLong((String)params.get(PARAM_MAXCREATIONDATE))); } if (CmsStringUtil.isNotEmptyOrWhitespaceOnly((String)params.get(PARAM_MINLASTMODIFICATIONDATE))) { searchParams.setMinDateLastModified(Long.parseLong((String)params.get(PARAM_MINLASTMODIFICATIONDATE))); } if (CmsStringUtil.isNotEmptyOrWhitespaceOnly((String)params.get(PARAM_MAXLASTMODIFICATIONDATE))) { searchParams.setMaxDateLastModified(Long.parseLong((String)params.get(PARAM_MAXLASTMODIFICATIONDATE))); } List fields = CmsStringUtil.splitAsList((String)params.get(PARAM_FIELDS), ','); searchParams.setFields(fields); searchParams.setSearchPage(Integer.parseInt((String)params.get(I_CmsListResourceCollector.PARAM_PAGE))); return searchParams; }
filter = appendPathFilter(searchCms, filter, params.getRoots()); filter = appendCategoryFilter(searchCms, filter, params.getCategories()); filter = appendResourceTypeFilter(searchCms, filter, params.getResourceTypes()); params.getMinDateLastModified(), params.getMaxDateLastModified()); filter = appendDateCreatedFilter(filter, params.getMinDateCreated(), params.getMaxDateCreated()); if (!params.isIgnoreQuery()) { if (params.getParsedQuery() != null) { fieldsQuery = p.parse(params.getParsedQuery()); } else if (params.getFieldQueries() != null) { for (CmsSearchParameters.CmsSearchFieldQuery fq : params.getFieldQueries()) { } else if ((params.getFields() != null) && (params.getFields().size() > 0)) { for (int i = 0; i < params.getFields().size(); i++) { QueryParser p = new QueryParser(params.getFields().get(i), getAnalyzer()); p.setMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE); booleanFieldsQuery.add(p.parse(params.getQuery()), BooleanClause.Occur.SHOULD); fieldsQuery = searcher.rewrite(p.parse(params.getQuery()));
if (getParsedQuery() != null) { result.append("&parsedQuery="); result.append(CmsEncoder.encodeParameter(getParsedQuery())); } else { result.append("&query="); result.append(CmsEncoder.encodeParameter(getQuery())); result.append(getMatchesPerPage()); result.append("&displayPages="); result.append(getDisplayPages()); result.append("&index="); result.append(CmsEncoder.encodeParameter(getIndex())); Sort sort = getSort(); if (sort != CmsSearchParameters.SORT_DEFAULT) { result.append("&sort="); if ((getCategories() != null) && (getCategories().size() > 0)) { result.append("&category="); Iterator<String> it = getCategories().iterator(); while (it.hasNext()) { result.append(it.next()); if (getMinDateCreated() > Long.MIN_VALUE) { result.append("&minDateCreated="); result.append(getMinDateCreated()); if (getMinDateLastModified() > Long.MIN_VALUE) { result.append("&minDateLastModified=");
if (getQuery() != null) { boolean closure = !getQuery().startsWith("+("); if (closure) { query.append("+("); query.append(getQuery()); if (closure) { query.append(")"); if (restriction.getQuery() != null) { if (query.indexOf(restriction.getQuery()) < 0) { query.append(" +("); query.append(restriction.getQuery()); query.append(")"); if ((restriction.getFields() != null) && (restriction.getFields().size() > 0)) { fields = ListUtils.intersection(m_fields, restriction.getFields()); } else { fields = m_fields; fields = restriction.getFields(); if ((restriction.getRoots() != null) && (restriction.getRoots().size() > 0)) { roots = ListUtils.intersection(m_roots, restriction.getRoots()); roots = restriction.getRoots();
if ((params.getRoots() != null) && (params.getRoots().size() > 0)) { for (int i = 0; i < params.getRoots().size(); i++) { String searchRoot = searchCms.getRequestContext().addSiteRoot(params.getRoots().get(i)); extendPathFilter(pathFilter, searchRoot); if ((params.getCategories() != null) && (params.getCategories().size() > 0)) { params.getCategories()), BooleanClause.Occur.MUST)); if ((params.getResourceTypes() != null) && (params.getResourceTypes().size() > 0)) { params.getResourceTypes()), BooleanClause.Occur.MUST)); if (params.getFieldQueries() != null) { Iterator<CmsSearchParameters.CmsSearchFieldQuery> i = params.getFieldQueries().iterator(); while (i.hasNext()) { CmsSearchParameters.CmsSearchFieldQuery fq = i.next(); } else if ((params.getFields() != null) && (params.getFields().size() > 0)) { for (int i = 0; i < params.getFields().size(); i++) { QueryParser p = new QueryParser(params.getFields().get(i), getAnalyzer()); booleanFieldsQuery.add(p.parse(params.getQuery()), BooleanClause.Occur.SHOULD); fieldsQuery = getSearcher().rewrite(p.parse(params.getQuery())); if (params.isCalculateCategories()) {
result.append(CmsEncoder.encodeParameter(getQuery())); result.append(getMatchesPerPage()); result.append("&displayPages="); result.append(getDisplayPages()); result.append("&index="); result.append(CmsEncoder.encodeParameter(getIndex())); Sort sort = getSort(); if (sort != CmsSearchParameters.SORT_DEFAULT) { result.append("&sort="); if ((getCategories() != null) && (getCategories().size() > 0)) { result.append("&category="); Iterator<String> it = getCategories().iterator(); while (it.hasNext()) { result.append(it.next()); if ((getRoots() != null) && (getRoots().size() > 0)) { result.append("&searchRoots="); Iterator<String> it = getRoots().iterator(); while (it.hasNext()) { result.append(CmsEncoder.encode(it.next())); if (isExcerptOnlySearchedFields()) { result.append("&excerptOnlySearchedFields=true");
/** * Wraps this parameters to the standard search parameters, so that inherited methods in the search index * can be used.<p> * * @return this parameters wrapped to the standard search parameters */ protected CmsSearchParameters getCmsSearchParams() { CmsSearchParameters result = new CmsSearchParameters(); result.setFields(getFields()); result.setExcerptOnlySearchedFields(true); if (getSearchWords() != null) { result.setQuery(getSearchWords()); result.setIgnoreQuery(false); } else { result.setIgnoreQuery(true); } return result; }
if ((params.getMinDateCreated() > Long.MIN_VALUE) && (dateCreated.getTime() < params.getMinDateCreated())) { return false; if ((params.getMaxDateCreated() < Long.MAX_VALUE) && (dateCreated.getTime() > params.getMaxDateCreated())) { return false; if ((params.getMinDateLastModified() > Long.MIN_VALUE) && (dateLastModified.getTime() < params.getMinDateLastModified())) { return false; if ((params.getMaxDateLastModified() < Long.MAX_VALUE) && (dateLastModified.getTime() > params.getMaxDateLastModified())) { return false;
/** * Overridden to additionally get a hold on the widget object of type * <code>{@link CmsSearchParameters}</code>.<p> * * @see org.opencms.workplace.tools.searchindex.A_CmsEditSearchIndexDialog#initUserObject() */ @SuppressWarnings("rawtypes") @Override protected void initUserObject() { super.initUserObject(); Object o = getDialogObject(); if (o == null) { m_searchParams = new CmsSearchParameters(); // implant a hook upon modifications of the list // this will set the search page to 1 if a restriction to the set of categories is performed m_searchParams.setCategories(new CmsHookListSearchCategory(m_searchParams, m_searchParams.getCategories())); m_search = new CmsSearch(); } else { Map dialogObject = (Map)o; m_searchParams = (CmsSearchParameters)dialogObject.get(PARAM_SEARCH_PARAMS); if (m_searchParams == null) { m_searchParams = new CmsSearchParameters(); } m_search = (CmsSearch)dialogObject.get(PARAM_SEARCH_OBJECT); if (m_search == null) { m_search = new CmsSearch(); } } m_searchParams.setSearchIndex(getSearchIndexIndex()); }
String query = m_searchParams.getQuery(); StringBuffer result = new StringBuffer(); if (!CmsStringUtil.isEmptyOrWhitespaceOnly(query) && (query.length() > 3)) { m_searchParams.setSearchPage(Integer.parseInt(page)); m_searchParams.setCategories(CmsStringUtil.splitAsList(categories, ',')); m_searchParams.setSearchRoots(searchRoots);
List<String> categories = search.getParameters().getCategories(); Iterator<String> it = categories.iterator(); int count = 0; count++; List<String> roots = search.getParameters().getRoots(); it = roots.iterator(); count = 0; result.append(CmsStringUtil.collectionAsString(search.getParameters().getFields(), ",")); result.append("\" />\n"); result.append(search.getParameters().getSortName()).append("\" />\n");
while (excerptFieldNames.hasNext()) { String fieldName = excerptFieldNames.next(); boolean createExcerpt = !params.isExcerptOnlySearchedFields() || params.getFields().contains(fieldName); if (createExcerpt && (doc.getFieldable(fieldName) != null)) { if (params.isExcerptOnlySearchedFields()) {
/** * A category has been removed: set search page to start page as * new results may / will be smaller. <p> * * * @see org.opencms.workplace.tools.searchindex.CmsHookList#onRemoved(java.lang.Object, int) */ @Override protected void onRemoved(Object peer, int index) { ((CmsSearchParameters)peer).setSearchPage(1); } }
/** * Gets the current fields list.<p> * * @return the fields to search */ public String getFields() { if (m_parameters.getFields() == null) { return ""; } StringBuffer result = new StringBuffer(); Iterator<String> it = m_parameters.getFields().iterator(); while (it.hasNext()) { result.append(it.next()); result.append(" "); } return result.toString(); }
/** * Sets the fields to search.<p> * * If the fields are set to <code>null</code>, * or not set at all, the default fields "content" and "meta" are used.<p> * * For a list of valid field names, see the Interface constants of * <code>{@link org.opencms.search.documents.I_CmsDocumentFactory}</code>. * * @param fields the fields to search */ public void setField(String[] fields) { m_parameters.setFields(Arrays.asList(fields)); resetLastResult(); }
1)); addWidget(new CmsWidgetDialogParameter( m_searchParams.getRoots(), "roots", "/", addWidget( new CmsWidgetDialogParameter( m_searchParams.getCategories(), "categories", "",