List of usage examples for com.liferay.portal.kernel.search QueryConfig setAttribute
public void setAttribute(String name, Serializable value)
From source file:com.liferay.document.library.repository.cmis.internal.CMISRepository.java
License:Open Source License
protected Hits doSearch(SearchContext searchContext, Query query) throws Exception { long startTime = System.currentTimeMillis(); Session session = getSession();/*from w ww.jav a 2 s .c om*/ RepositoryInfo repositoryInfo = session.getRepositoryInfo(); RepositoryCapabilities repositoryCapabilities = repositoryInfo.getCapabilities(); QueryConfig queryConfig = searchContext.getQueryConfig(); CapabilityQuery capabilityQuery = repositoryCapabilities.getQueryCapability(); queryConfig.setAttribute("capabilityQuery", capabilityQuery.value()); String productName = repositoryInfo.getProductName(); String productVersion = repositoryInfo.getProductVersion(); queryConfig.setAttribute("repositoryProductName", productName); queryConfig.setAttribute("repositoryProductVersion", productVersion); String queryString = _cmisSearchQueryBuilder.buildQuery(searchContext, query); if (_cmisRepositoryDetector.isNuxeo5_4()) { queryString += " AND (" + PropertyIds.IS_LATEST_VERSION + " = true)"; } if (_log.isDebugEnabled()) { _log.debug("CMIS search query: " + queryString); } boolean searchAllVersions = _cmisRepositoryDetector.isNuxeo5_5OrHigher(); ItemIterable<QueryResult> queryResults = session.query(queryString, searchAllVersions); int start = searchContext.getStart(); int end = searchContext.getEnd(); if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) { start = 0; } int total = 0; List<com.liferay.portal.kernel.search.Document> documents = new ArrayList<>(); List<String> snippets = new ArrayList<>(); List<Float> scores = new ArrayList<>(); for (QueryResult queryResult : queryResults) { total++; if (total <= start) { continue; } if ((total > end) && (end != QueryUtil.ALL_POS)) { continue; } com.liferay.portal.kernel.search.Document document = new DocumentImpl(); String objectId = queryResult.getPropertyValueByQueryName(PropertyIds.OBJECT_ID); if (_log.isDebugEnabled()) { _log.debug("Search result object ID " + objectId); } FileEntry fileEntry = null; try { fileEntry = toFileEntry(objectId, true); } catch (Exception e) { if (_log.isDebugEnabled()) { Throwable cause = e.getCause(); if (cause != null) { cause = cause.getCause(); } if (cause instanceof CmisObjectNotFoundException) { _log.debug("Search result ignored for CMIS document which " + "has a version with an invalid object ID " + cause.getMessage()); } else { _log.debug("Search result ignored for invalid object ID", e); } } total--; continue; } DocumentHelper documentHelper = new DocumentHelper(document); documentHelper.setEntryKey(fileEntry.getModelClassName(), fileEntry.getFileEntryId()); document.addKeyword(Field.TITLE, fileEntry.getTitle()); documents.add(document); if (queryConfig.isScoreEnabled()) { Object scoreObj = queryResult.getPropertyValueByQueryName("HITS"); if (scoreObj != null) { scores.add(Float.valueOf(scoreObj.toString())); } else { scores.add(1.0F); } } else { scores.add(1.0F); } snippets.add(StringPool.BLANK); } float searchTime = (float) (System.currentTimeMillis() - startTime) / Time.SECOND; Hits hits = new HitsImpl(); hits.setDocs(documents.toArray(new com.liferay.portal.kernel.search.Document[documents.size()])); hits.setLength(total); hits.setQuery(query); hits.setQueryTerms(new String[0]); hits.setScores(ArrayUtil.toFloatArray(scores)); hits.setSearchTime(searchTime); hits.setSnippets(snippets.toArray(new String[snippets.size()])); hits.setStart(startTime); return hits; }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsCombinedSupportedQuery() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.BOTHCOMBINED.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("((cmis:name = 'test' OR cmis:createdBy = 'test') OR " + "CONTAINS('test'))", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsCombinedSupportedWildcardQuery() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test*.jpg"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.BOTHCOMBINED.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("((cmis:name LIKE 'test%.jpg' OR cmis:createdBy LIKE " + "'test%.jpg') OR CONTAINS('(test AND .jpg)'))", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsOnlySupportedQuery() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("CONTAINS('test')", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsOnlySupportedQueryMultipleKeywords() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test multiple"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("CONTAINS('(test OR multiple)')", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsOnlySupportedQueryWithConjunction() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("+test +multiple"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("CONTAINS('(test multiple)')", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsOnlySupportedQueryWithNegation() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test -multiple"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("CONTAINS('(-multiple OR test)')", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsOnlySupportedQueryWithNegationPhrase() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test -\"multiple words\""); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("CONTAINS('(-\\'multiple words\\' OR test)')", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
@Test public void testContainsOnlySupportedWithApostrophe() throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setKeywords("test's"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.FULLTEXTONLY.value()); String cmisQuery = buildQuery(searchContext); assertQueryEquals("CONTAINS('test\\'s')", cmisQuery); }
From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilderTest.java
License:Open Source License
protected String buildFolderQuery(boolean searchSubfolders) throws Exception { SearchContext searchContext = getSearchContext(); searchContext.setFolderIds(new long[] { _DL_FOLDER_ID }); searchContext.setKeywords("test"); QueryConfig queryConfig = searchContext.getQueryConfig(); queryConfig.setAttribute("capabilityQuery", CapabilityQuery.BOTHCOMBINED.value()); queryConfig.setSearchSubfolders(searchSubfolders); return buildQuery(searchContext); }