diff --git a/config/alfresco/rule-services-context.xml b/config/alfresco/rule-services-context.xml index 02a5b12361..b8e669c6c5 100644 --- a/config/alfresco/rule-services-context.xml +++ b/config/alfresco/rule-services-context.xml @@ -60,7 +60,7 @@ - + diff --git a/config/alfresco/workflow/submit_processdefinition.xml b/config/alfresco/workflow/submit_processdefinition.xml index 424f8c80f2..817896067d 100644 --- a/config/alfresco/workflow/submit_processdefinition.xml +++ b/config/alfresco/workflow/submit_processdefinition.xml @@ -234,7 +234,8 @@ + - \ No newline at end of file + diff --git a/source/java/org/alfresco/repo/avm/AVMScaleTestP.java b/source/java/org/alfresco/repo/avm/AVMScaleTestP.java new file mode 100644 index 0000000000..3dfb0a2035 --- /dev/null +++ b/source/java/org/alfresco/repo/avm/AVMScaleTestP.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing + */ + +package org.alfresco.repo.avm; + +import org.alfresco.repo.avm.util.BulkLoader; +import org.alfresco.repo.avm.util.BulkReader; + +/** + * Test of scaling out to large numbers of files. + * @author britt + */ +public class AVMScaleTestP extends AVMServiceTestBase +{ + public void testScaling() + { + int n = 4; // The number of BulkLoads to do. + int futzCount = 10; // The number of post snapshot modifications to make after each load. + String load = "/Users/britt/hibernate-3.1"; // The tree of stuff to load. + BulkLoader loader = new BulkLoader(); + loader.setAvmService(fService); + loader.setPropertyCount(5); + BulkReader reader = new BulkReader(); + reader.setAvmService(fService); + long lastTime = System.currentTimeMillis(); + for (int i = 0; i < n; i++) + { + System.out.println("Round " + (i + 1)); + fService.createStore("store" + i); + loader.recursiveLoad(load, "store" + i + ":/"); + fService.createSnapshot("store" + i, null, null); + long now = System.currentTimeMillis(); + System.out.println("Load Time: " + (now - lastTime) + "ms"); + lastTime = now; + reader.recursiveFutz("store" + i, "store" + i + ":/", futzCount); + now = System.currentTimeMillis(); + System.out.println("Read Time: " + (now - lastTime) + "ms"); + System.out.flush(); + lastTime = now; + } + } +} diff --git a/source/java/org/alfresco/repo/avm/util/BulkLoader.java b/source/java/org/alfresco/repo/avm/util/BulkLoader.java index eb5db0c6ba..15514f1099 100644 --- a/source/java/org/alfresco/repo/avm/util/BulkLoader.java +++ b/source/java/org/alfresco/repo/avm/util/BulkLoader.java @@ -28,9 +28,13 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; +import org.alfresco.repo.domain.PropertyValue; import org.alfresco.service.cmr.avm.AVMException; import org.alfresco.service.cmr.avm.AVMService; +import org.alfresco.service.namespace.QName; /** * This takes a filesystem directory path and a repository path and name @@ -41,6 +45,8 @@ public class BulkLoader { private AVMService fService; + private int fPropertyCount = 0; + /** * Create a new one. */ @@ -57,6 +63,11 @@ public class BulkLoader fService = service; } + public void setPropertyCount(int propCount) + { + fPropertyCount = propCount; + } + /** * Recursively load content. * @param fsPath The path in the filesystem. @@ -64,6 +75,11 @@ public class BulkLoader */ public void recursiveLoad(String fsPath, String repPath) { + Map props = new HashMap(); + for (int i = 0; i < fPropertyCount; i++) + { + props.put(QName.createQName("silly", "prop" + i), new PropertyValue(null, "I am property " + i)); + } File file = new File(fsPath); String name = file.getName(); if (file.isDirectory()) @@ -71,6 +87,7 @@ public class BulkLoader fService.createDirectory(repPath, name); String[] children = file.list(); String baseName = repPath.endsWith("/") ? repPath + name : repPath + "/" + name; + fService.setNodeProperties(baseName, props); for (String child : children) { recursiveLoad(fsPath + "/" + child, baseName); @@ -82,6 +99,7 @@ public class BulkLoader { InputStream in = new FileInputStream(file); OutputStream out = fService.createFile(repPath, name); + fService.setNodeProperties(repPath + "/" + name, props); byte[] buff = new byte[8192]; int read = 0; while ((read = in.read(buff)) != -1) diff --git a/source/java/org/alfresco/repo/avm/util/BulkReader.java b/source/java/org/alfresco/repo/avm/util/BulkReader.java new file mode 100644 index 0000000000..704937abf8 --- /dev/null +++ b/source/java/org/alfresco/repo/avm/util/BulkReader.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing + */ + +package org.alfresco.repo.avm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Random; + +import org.alfresco.service.cmr.avm.AVMNodeDescriptor; +import org.alfresco.service.cmr.avm.AVMService; + +/** + * Testing utility class. Reads a tree recursively. + * @author britt + */ +public class BulkReader +{ + private AVMService fService; + + public BulkReader() + { + } + + public void setAvmService(AVMService service) + { + fService = service; + } + + public void recursiveFutz(String store, String path, int futz) + { + List paths = new ArrayList(); + recursiveRead(path, paths); + Random random = new Random(System.currentTimeMillis()); + int futzed = 0; + while (futzed < futz) + { + String futzPath = paths.get(random.nextInt(paths.size())); + AVMNodeDescriptor desc = fService.lookup(-1, futzPath); + if (desc.isFile()) + { + try + { + fService.getFileOutputStream(futzPath).close(); + } + catch (IOException e) + { + // Do nothing. + } + futzed++; + } + } + fService.createSnapshot(store, null, null); + } + + public void recursiveRead(String path, List paths) + { + AVMNodeDescriptor desc = fService.lookup(-1, path); + paths.add(desc.getPath()); + if (desc.isFile()) + { + InputStream in = fService.getFileInputStream(desc); + try + { + byte[] buff = new byte[8192]; + while (in.read(buff) != -1); + in.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + return; + } + Map listing = fService.getDirectoryListing(desc); + for (Map.Entry entry : listing.entrySet()) + { + recursiveRead(entry.getValue().getPath(), paths); + } + } +} diff --git a/source/java/org/alfresco/repo/avm/wf/AVMRemoveAllWebappsHandler.java b/source/java/org/alfresco/repo/avm/wf/AVMRemoveAllWebappsHandler.java new file mode 100644 index 0000000000..13fece4219 --- /dev/null +++ b/source/java/org/alfresco/repo/avm/wf/AVMRemoveAllWebappsHandler.java @@ -0,0 +1,112 @@ +/*----------------------------------------------------------------------------- +* Copyright 2007 Alfresco Inc. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +* for more details. +* +* You should have received a copy of the GNU General Public License along +* with this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. As a special +* exception to the terms and conditions of version 2.0 of the GPL, you may +* redistribute this Program in connection with Free/Libre and Open Source +* Software ("FLOSS") applications as described in Alfresco's FLOSS exception. +* You should have received a copy of the text describing the FLOSS exception, +* and it is also available here: http://www.alfresco.com/legal/licensing +* +* +* Author Jon Cox +* File AVMRemoveAllWebappsHandler.java +*----------------------------------------------------------------------------*/ + +package org.alfresco.repo.avm.wf; + +import java.util.Map; +import org.alfresco.config.JNDIConstants; +import org.alfresco.mbeans.VirtServerRegistry; +import org.alfresco.repo.avm.AVMNodeConverter; +import org.alfresco.repo.avm.util.RawServices; +import org.alfresco.repo.domain.PropertyValue; +import org.alfresco.repo.workflow.jbpm.JBPMNode; +import org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler; +import org.alfresco.service.cmr.avm.AVMService; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.Pair; +import org.apache.log4j.Logger; +import org.jbpm.graph.exe.ExecutionContext; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.context.ApplicationContext; + +/** + * Remove all webapps in a sandbox + * + * @author Jon Cox + */ +public class AVMRemoveAllWebappsHandler extends JBPMSpringActionHandler +{ + static final long serialVersionUID = 3004374776252613278L; + + private static Logger log = + Logger.getLogger(AVMRemoveAllWebappsHandler.class); + + /** + * The AVMService instance. + */ + private AVMService fAVMService; + + + /** + * Initialize service references. + * @param factory The BeanFactory to get references from. + */ + @Override + protected void initialiseHandler(BeanFactory factory) + { + fAVMService = (AVMService)factory.getBean("AVMService"); + } + + /** + * Do the actual work. + * @param executionContext The context to get stuff from. + */ + public void execute(ExecutionContext executionContext) throws Exception + { + if (log.isDebugEnabled()) + log.debug("AVMRemoveAllWebappsHandler.execute()"); + + // retrieve submitted package + NodeRef pkg = ((JBPMNode)executionContext.getContextInstance(). + getVariable("bpm_package")).getNodeRef(); + + Pair pkgPath = AVMNodeConverter.ToAVMVersionPath(pkg); + + Integer version = pkgPath.getFirst(); + String www_dir = pkgPath.getSecond(); + String appbase_dir = www_dir + "/" + JNDIConstants.DIR_DEFAULT_APPBASE; + + if (log.isDebugEnabled()) + { + log.debug("version: " + version ); + log.debug("appbase_dir: " + appbase_dir ); + } + + ApplicationContext springContext = RawServices.Instance().getContext(); + VirtServerRegistry vServerRegistry = (VirtServerRegistry) + springContext.getBean("VirtServerRegistry"); + + if (log.isDebugEnabled()) + log.debug("Sending JMX message to shut down workflow webapps"); + + vServerRegistry.removeAllWebapps( version, appbase_dir, true ); + + if (log.isDebugEnabled()) + log.debug("Sent JMX message to shut down workflow webapps"); + } +} diff --git a/source/java/org/alfresco/repo/avm/wf/AVMSubmitTransactionListener.java b/source/java/org/alfresco/repo/avm/wf/AVMSubmitTransactionListener.java index 17cc16aa9f..a0dcc59081 100644 --- a/source/java/org/alfresco/repo/avm/wf/AVMSubmitTransactionListener.java +++ b/source/java/org/alfresco/repo/avm/wf/AVMSubmitTransactionListener.java @@ -36,6 +36,7 @@ import org.alfresco.repo.transaction.TransactionListenerAdapter; import org.alfresco.service.cmr.avmsync.AVMDifference; import org.alfresco.util.VirtServerUtils; import org.springframework.context.ApplicationContext; +import org.apache.log4j.Logger; /** * Gets callbacks at critical moments within a transaction @@ -44,8 +45,10 @@ import org.springframework.context.ApplicationContext; */ public class AVMSubmitTransactionListener extends TransactionListenerAdapter { + private static Logger log = + Logger.getLogger(AVMSubmitTransactionListener.class); + public AVMSubmitTransactionListener() { } - /** * Notify virtualization server that webapps in workflow sandbox @@ -104,22 +107,31 @@ public class AVMSubmitTransactionListener extends TransactionListenerAdapter requiresUpdate.getDestinationPath(), true ); + if (log.isDebugEnabled()) + log.debug("JMX update to virt server called after commit"); } - // Remove virtual weapps from workflow sandbox - - if ( ! stagingDiffs.isEmpty() ) - { - // All the files are from the same workflow sandbox; - // so to remove all the webapps, you just need to - // look at the 1st difference - - AVMDifference d = stagingDiffs.iterator().next(); - vServerRegistry.removeAllWebapps( d.getSourceVersion(), d.getSourcePath(), true ); - } - + // Remove virtual webapps from workflow sandbox prior to + // AVMRemoveWFStoreHandler in the "process-end" clause. + // This way, even if the workflow is aborted, the JMX message + // to the virt server is still sent. Therefore, no longer + // doing this here: + // + // if ( ! stagingDiffs.isEmpty() ) + // { + // // All the files are from the same workflow sandbox; + // // so to remove all the webapps, you just need to + // // look at the 1st difference + // + // AVMDifference d = stagingDiffs.iterator().next(); + // vServerRegistry.removeAllWebapps( d.getSourceVersion(), + // d.getSourcePath(), true ); + // } AlfrescoTransactionSupport.unbindResource("staging_diffs"); + + if (log.isDebugEnabled()) + log.debug("staging_diff resource unbound after commit"); } @@ -130,5 +142,8 @@ public class AVMSubmitTransactionListener extends TransactionListenerAdapter public void afterRollback() { AlfrescoTransactionSupport.unbindResource("staging_diffs"); + + if (log.isDebugEnabled()) + log.debug("staging_diff resource unbound after rollback"); } } diff --git a/source/java/org/alfresco/repo/search/MLAnalysisMode.java b/source/java/org/alfresco/repo/search/MLAnalysisMode.java index 779debfa92..e703276727 100644 --- a/source/java/org/alfresco/repo/search/MLAnalysisMode.java +++ b/source/java/org/alfresco/repo/search/MLAnalysisMode.java @@ -1,3 +1,27 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ package org.alfresco.repo.search; import java.util.Collection; diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java index 458f67b67c..d5211a5eee 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java @@ -58,6 +58,7 @@ import org.alfresco.service.namespace.NamespacePrefixResolver; import org.alfresco.service.namespace.QName; import org.alfresco.util.ISO9075; import org.alfresco.util.SearchLanguageConversion; +import org.apache.log4j.Logger; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; import org.apache.lucene.index.TermEnum; @@ -71,12 +72,14 @@ import org.saxpath.SAXPathException; import com.werken.saxpath.XPathReader; /** - * The Lucene implementation of Searcher At the moment we support only lucene based queries. TODO: Support for other query languages + * The Lucene implementation of Searcher At the moment we support only lucene based queries. TODO: Support for other + * query languages * * @author andyh */ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneSearcher { + static Logger s_logger = Logger.getLogger(ADMLuceneSearcherImpl.class); /** * Default field name @@ -100,11 +103,12 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS */ /** - * Get an initialised searcher for the store and transaction Normally we do not search against a a store and delta. Currently only gets the searcher against the main index. + * Get an initialised searcher for the store and transaction Normally we do not search against a a store and delta. + * Currently only gets the searcher against the main index. * * @param storeRef - * @param indexer - * @param config + * @param indexer + * @param config * @return - the searcher implementation */ public static ADMLuceneSearcherImpl getSearcher(StoreRef storeRef, LuceneIndexer indexer, LuceneConfig config) @@ -127,7 +131,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS * Get an intialised searcher for the store. No transactional ammendsmends are searched. * * @param storeRef - * @param config + * @param config * @return the searcher */ public static ADMLuceneSearcherImpl getSearcher(StoreRef storeRef, LuceneConfig config) @@ -163,6 +167,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS /** * Set the query register + * * @param queryRegister */ public void setQueryRegister(QueryRegisterComponent queryRegister) @@ -170,8 +175,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS this.queryRegister = queryRegister; } - public ResultSet query(StoreRef store, String language, String queryString, Path[] queryOptions, - QueryParameterDefinition[] queryParameterDefinitions) throws SearcherException + public ResultSet query(StoreRef store, String language, String queryString, Path[] queryOptions, QueryParameterDefinition[] queryParameterDefinitions) throws SearcherException { store = tenantService.getName(store); @@ -240,11 +244,23 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS defaultOperator = LuceneQueryParser.OR_OPERATOR; } - Query query = LuceneQueryParser.parse(parameterisedQueryString, DEFAULT_FIELD, - new LuceneAnalyser(dictionaryService, searchParameters.getMlAnalaysisMode() == null ? getLuceneConfig().getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode()), - namespacePrefixResolver, dictionaryService, tenantService, defaultOperator, searchParameters, getLuceneConfig()); - ClosingIndexSearcher searcher = getSearcher(indexer); + Query query = LuceneQueryParser.parse( + parameterisedQueryString, DEFAULT_FIELD, + new LuceneAnalyser( + dictionaryService, + searchParameters.getMlAnalaysisMode() == null ? getLuceneConfig().getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode()), + namespacePrefixResolver, + dictionaryService, + tenantService, + defaultOperator, + searchParameters, + getLuceneConfig(), + searcher.getIndexReader()); + if (s_logger.isDebugEnabled()) + { + s_logger.debug("Query is " + query.toString()); + } if (searcher == null) { // no index return an empty result set @@ -288,6 +304,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS } Path[] paths = searchParameters.getAttributePaths().toArray(new Path[0]); +<<<<<<< .working return new LuceneResultSet( hits, searcher, @@ -295,6 +312,9 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS tenantService, paths, searchParameters); +======= + return new LuceneResultSet(hits, searcher, nodeService, paths, searchParameters); +>>>>>>> .merge-right.r6367 } catch (ParseException e) @@ -328,8 +348,12 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS return new EmptyResultSet(); } Hits hits = searcher.search(query); +<<<<<<< .working return new LuceneResultSet(hits, searcher, nodeService, tenantService, searchParameters.getAttributePaths().toArray( new Path[0]), searchParameters); +======= + return new LuceneResultSet(hits, searcher, nodeService, searchParameters.getAttributePaths().toArray(new Path[0]), searchParameters); +>>>>>>> .merge-right.r6367 } catch (SAXPathException e) { @@ -380,8 +404,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS return query(store, language, query, null, null); } - public ResultSet query(StoreRef store, String language, String query, - QueryParameterDefinition[] queryParameterDefintions) + public ResultSet query(StoreRef store, String language, String query, QueryParameterDefinition[] queryParameterDefintions) { return query(store, language, query, null, queryParameterDefintions); } @@ -407,8 +430,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS checkParameters(definition, queryParameters); - String queryString = parameterise(definition.getQuery(), definition.getQueryParameterMap(), queryParameters, - definition.getNamespacePrefixResolver()); + String queryString = parameterise(definition.getQuery(), definition.getQueryParameterMap(), queryParameters, definition.getNamespacePrefixResolver()); return query(store, definition.getLanguage(), queryString, null, null); } @@ -420,8 +442,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS * @param queryParameters * @throws QueryParameterisationException */ - private void checkParameters(CannedQueryDef definition, QueryParameter[] queryParameters) - throws QueryParameterisationException + private void checkParameters(CannedQueryDef definition, QueryParameter[] queryParameters) throws QueryParameterisationException { List missing = new ArrayList(); @@ -461,12 +482,13 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS } /* - * Parameterise the query string - not sure if it is required to escape lucence spacials chars The parameters could be used to build the query - the contents of parameters - * should alread have been escaped if required. ... mush better to provide the parameters and work out what to do TODO: conditional query escapement - may be we should have a - * parameter type that is not escaped + * Parameterise the query string - not sure if it is required to escape lucence spacials chars The parameters could + * be used to build the query - the contents of parameters should alread have been escaped if required. ... mush + * better to provide the parameters and work out what to do TODO: conditional query escapement - may be we should + * have a parameter type that is not escaped */ - private String parameterise(String unparameterised, Map map, - QueryParameter[] queryParameters, NamespacePrefixResolver nspr) throws QueryParameterisationException + private String parameterise(String unparameterised, Map map, QueryParameter[] queryParameters, NamespacePrefixResolver nspr) + throws QueryParameterisationException { Map> valueMap = new HashMap>(); @@ -547,28 +569,29 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS /** * @see org.alfresco.repo.search.impl.NodeSearcher */ - public List selectNodes(NodeRef contextNodeRef, String xpath, QueryParameterDefinition[] parameters, - NamespacePrefixResolver namespacePrefixResolver, boolean followAllParentLinks, String language) - throws InvalidNodeRefException, XPathException + public List selectNodes(NodeRef contextNodeRef, String xpath, QueryParameterDefinition[] parameters, NamespacePrefixResolver namespacePrefixResolver, + boolean followAllParentLinks, String language) throws InvalidNodeRefException, XPathException { NodeSearcher nodeSearcher = new NodeSearcher(nodeService, dictionaryService, this); +<<<<<<< .working contextNodeRef = tenantService.getName(contextNodeRef); return nodeSearcher.selectNodes(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, language); +======= + return nodeSearcher.selectNodes(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, language); +>>>>>>> .merge-right.r6367 } /** * @see org.alfresco.repo.search.impl.NodeSearcher */ - public List selectProperties(NodeRef contextNodeRef, String xpath, - QueryParameterDefinition[] parameters, NamespacePrefixResolver namespacePrefixResolver, + public List selectProperties(NodeRef contextNodeRef, String xpath, QueryParameterDefinition[] parameters, NamespacePrefixResolver namespacePrefixResolver, boolean followAllParentLinks, String language) throws InvalidNodeRefException, XPathException { NodeSearcher nodeSearcher = new NodeSearcher(nodeService, dictionaryService, this); - return nodeSearcher.selectProperties(contextNodeRef, xpath, parameters, namespacePrefixResolver, - followAllParentLinks, language); + return nodeSearcher.selectProperties(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, language); } /** @@ -582,30 +605,24 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS /** * @return Returns true if the pattern is present, otherwise false. */ - public boolean contains(NodeRef nodeRef, QName propertyQName, String googleLikePattern, - SearchParameters.Operator defaultOperator) + public boolean contains(NodeRef nodeRef, QName propertyQName, String googleLikePattern, SearchParameters.Operator defaultOperator) { ResultSet resultSet = null; try { // build Lucene search string specific to the node StringBuilder sb = new StringBuilder(); - sb.append("+ID:\"").append(nodeRef.toString()).append("\" +(TEXT:(") - .append(googleLikePattern.toLowerCase()).append(") "); + sb.append("+ID:\"").append(nodeRef.toString()).append("\" +(TEXT:(").append(googleLikePattern.toLowerCase()).append(") "); if (propertyQName != null) { - sb.append(" OR @").append( - LuceneQueryParser.escape(QName.createQName(propertyQName.getNamespaceURI(), - ISO9075.encode(propertyQName.getLocalName())).toString())); + sb.append(" OR @").append(LuceneQueryParser.escape(QName.createQName(propertyQName.getNamespaceURI(), ISO9075.encode(propertyQName.getLocalName())).toString())); sb.append(":(").append(googleLikePattern.toLowerCase()).append(")"); } else { for (QName key : nodeService.getProperties(nodeRef).keySet()) { - sb.append(" OR @").append( - LuceneQueryParser.escape(QName.createQName(key.getNamespaceURI(), - ISO9075.encode(key.getLocalName())).toString())); + sb.append(" OR @").append(LuceneQueryParser.escape(QName.createQName(key.getNamespaceURI(), ISO9075.encode(key.getLocalName())).toString())); sb.append(":(").append(googleLikePattern.toLowerCase()).append(")"); } } @@ -657,10 +674,8 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS } if (propertyQName != null) { - sb.append(" @").append( - LuceneQueryParser.escape(QName.createQName(propertyQName.getNamespaceURI(), - ISO9075.encode(propertyQName.getLocalName())).toString())).append(":(").append(pattern) - .append(")"); + sb.append(" @").append(LuceneQueryParser.escape(QName.createQName(propertyQName.getNamespaceURI(), ISO9075.encode(propertyQName.getLocalName())).toString())) + .append(":(").append(pattern).append(")"); } sb.append(")"); @@ -691,26 +706,21 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS } else { - String propertyString = DefaultTypeConverter.INSTANCE.convert(String.class, nodeService.getProperty( - nodeRef, propertyQName)); + String propertyString = DefaultTypeConverter.INSTANCE.convert(String.class, nodeService.getProperty(nodeRef, propertyQName)); return propertyString.toLowerCase().matches(pattern); } } } - public List selectNodes(NodeRef contextNodeRef, String xpath, QueryParameterDefinition[] parameters, - NamespacePrefixResolver namespacePrefixResolver, boolean followAllParentLinks) - throws InvalidNodeRefException, XPathException - { - return selectNodes(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, - SearchService.LANGUAGE_XPATH); - } - - public List selectProperties(NodeRef contextNodeRef, String xpath, - QueryParameterDefinition[] parameters, NamespacePrefixResolver namespacePrefixResolver, + public List selectNodes(NodeRef contextNodeRef, String xpath, QueryParameterDefinition[] parameters, NamespacePrefixResolver namespacePrefixResolver, boolean followAllParentLinks) throws InvalidNodeRefException, XPathException { - return selectProperties(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, - SearchService.LANGUAGE_XPATH); + return selectNodes(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, SearchService.LANGUAGE_XPATH); + } + + public List selectProperties(NodeRef contextNodeRef, String xpath, QueryParameterDefinition[] parameters, NamespacePrefixResolver namespacePrefixResolver, + boolean followAllParentLinks) throws InvalidNodeRefException, XPathException + { + return selectProperties(contextNodeRef, xpath, parameters, namespacePrefixResolver, followAllParentLinks, SearchService.LANGUAGE_XPATH); } } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java index 262cb4e931..6287be07e8 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java @@ -123,10 +123,11 @@ public class ADMLuceneTest extends TestCase QName orderLong = QName.createQName(TEST_NAMESPACE, "orderLong"); QName orderInt = QName.createQName(TEST_NAMESPACE, "orderInt"); - + QName aspectWithChildren = QName.createQName(TEST_NAMESPACE, "aspectWithChildren"); TransactionService transactionService; + RetryingTransactionHelper retryingTransactionHelper; NodeService nodeService; @@ -213,7 +214,7 @@ public class ADMLuceneTest extends TestCase queryRegisterComponent = (QueryRegisterComponent) ctx.getBean("queryRegisterComponent"); namespacePrefixResolver = (DictionaryNamespaceComponent) ctx.getBean("namespaceService"); indexerAndSearcher = (LuceneIndexerAndSearcher) ctx.getBean("admLuceneIndexerAndSearcherFactory"); - ((AbstractLuceneIndexerAndSearcherFactory)indexerAndSearcher).setMaxAtomicTransformationTime(1000000); + ((AbstractLuceneIndexerAndSearcherFactory) indexerAndSearcher).setMaxAtomicTransformationTime(1000000); transactionService = (TransactionService) ctx.getBean("transactionComponent"); retryingTransactionHelper = (RetryingTransactionHelper) ctx.getBean("retryingTransactionHelper"); tenantService = (TenantService) ctx.getBean("tenantService"); @@ -223,7 +224,7 @@ public class ADMLuceneTest extends TestCase namespaceDao = (NamespaceDAOImpl) ctx.getBean("namespaceDAO"); I18NUtil.setLocale(Locale.UK); - + this.authenticationComponent = (AuthenticationComponent) ctx.getBean("authenticationComponent"); queryRegisterComponent.loadQueryCollection("testQueryRegister.xml"); @@ -246,17 +247,14 @@ public class ADMLuceneTest extends TestCase StoreRef storeRef = nodeService.createStore(StoreRef.PROTOCOL_WORKSPACE, "Test_" + System.currentTimeMillis()); rootNodeRef = nodeService.getRootNode(storeRef); - n1 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}one"), - testSuperType, getOrderProperties()).getChildRef(); + n1 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}one"), testSuperType, getOrderProperties()).getChildRef(); nodeService.setProperty(n1, QName.createQName("{namespace}property-1"), "ValueOne"); - n2 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}two"), - testSuperType, getOrderProperties()).getChildRef(); + n2 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}two"), testSuperType, getOrderProperties()).getChildRef(); nodeService.setProperty(n2, QName.createQName("{namespace}property-1"), "valueone"); nodeService.setProperty(n2, QName.createQName("{namespace}property-2"), "valuetwo"); - n3 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}three"), - testSuperType, getOrderProperties()).getChildRef(); + n3 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}three"), testSuperType, getOrderProperties()).getChildRef(); ObjectOutputStream oos; try @@ -282,12 +280,9 @@ public class ADMLuceneTest extends TestCase } Map testProperties = new HashMap(); - testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic"), - "TEXT THAT IS INDEXED STORED AND TOKENISED ATOMICALLY KEYONE"); - testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic"), - "TEXT THAT IS INDEXED STORED AND TOKENISED ATOMICALLY KEYUNSTORED"); - testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic"), - "TEXT THAT IS INDEXED STORED AND TOKENISED BUT NOT ATOMICALLY KEYTWO"); + testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic"), "TEXT THAT IS INDEXED STORED AND TOKENISED ATOMICALLY KEYONE"); + testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic"), "TEXT THAT IS INDEXED STORED AND TOKENISED ATOMICALLY KEYUNSTORED"); + testProperties.put(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic"), "TEXT THAT IS INDEXED STORED AND TOKENISED BUT NOT ATOMICALLY KEYTWO"); testProperties.put(QName.createQName(TEST_NAMESPACE, "int-ista"), Integer.valueOf(1)); testProperties.put(QName.createQName(TEST_NAMESPACE, "long-ista"), Long.valueOf(2)); testProperties.put(QName.createQName(TEST_NAMESPACE, "float-ista"), Float.valueOf(3.4f)); @@ -325,31 +320,29 @@ public class ADMLuceneTest extends TestCase // Content multivalued // - note only one the first value is used from the collection // - andit has to go in type d:any as d:content is not allowed to be multivalued - + ArrayList contentValues = new ArrayList(); - contentValues.add(new ContentData(null, "text/plain", 0L, "UTF-16", Locale.UK )); + contentValues.add(new ContentData(null, "text/plain", 0L, "UTF-16", Locale.UK)); testProperties.put(QName.createQName(TEST_NAMESPACE, "content-many-ista"), contentValues); - - - + // MLText multivalued - + MLText mlText1 = new MLText(); mlText1.addValue(Locale.ENGLISH, "cabbage"); mlText1.addValue(Locale.FRENCH, "chou"); - + MLText mlText2 = new MLText(); mlText2.addValue(Locale.ENGLISH, "lemur"); mlText2.addValue(new Locale("ru"), "лемур"); - + ArrayList mlValues = new ArrayList(); mlValues.add(mlText1); mlValues.add(mlText2); - + testProperties.put(QName.createQName(TEST_NAMESPACE, "mltext-many-ista"), mlValues); - + // null in multi valued - + ArrayList testList = new ArrayList(); testList.add(null); testProperties.put(QName.createQName(TEST_NAMESPACE, "nullList"), testList); @@ -357,44 +350,38 @@ public class ADMLuceneTest extends TestCase testList2.add("woof"); testList2.add(null); - n4 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}four"), - testType, testProperties).getChildRef(); - + n4 = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}four"), testType, testProperties).getChildRef(); ContentWriter multiWriter = contentService.getWriter(n4, QName.createQName(TEST_NAMESPACE, "content-many-ista"), true); - multiWriter.setEncoding( "UTF-16"); + multiWriter.setEncoding("UTF-16"); multiWriter.setMimetype("text/plain"); multiWriter.putContent("multicontent"); - nodeService.getProperties(n1); nodeService.getProperties(n2); nodeService.getProperties(n3); nodeService.getProperties(n4); - n5 = nodeService.createNode(n1, ASSOC_TYPE_QNAME, QName.createQName("{namespace}five"), testSuperType, - getOrderProperties()).getChildRef(); - n6 = nodeService.createNode(n1, ASSOC_TYPE_QNAME, QName.createQName("{namespace}six"), testSuperType, - getOrderProperties()).getChildRef(); - n7 = nodeService.createNode(n2, ASSOC_TYPE_QNAME, QName.createQName("{namespace}seven"), testSuperType, - getOrderProperties()).getChildRef(); - n8 = nodeService.createNode(n2, ASSOC_TYPE_QNAME, QName.createQName("{namespace}eight-2"), testSuperType, - getOrderProperties()).getChildRef(); - n9 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}nine"), testSuperType, - getOrderProperties()).getChildRef(); - n10 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}ten"), testSuperType, - getOrderProperties()).getChildRef(); - n11 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}eleven"), testSuperType, - getOrderProperties()).getChildRef(); - n12 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}twelve"), testSuperType, - getOrderProperties()).getChildRef(); - n13 = nodeService.createNode(n12, ASSOC_TYPE_QNAME, QName.createQName("{namespace}thirteen"), testSuperType, - getOrderProperties()).getChildRef(); + n5 = nodeService.createNode(n1, ASSOC_TYPE_QNAME, QName.createQName("{namespace}five"), testSuperType, getOrderProperties()).getChildRef(); + n6 = nodeService.createNode(n1, ASSOC_TYPE_QNAME, QName.createQName("{namespace}six"), testSuperType, getOrderProperties()).getChildRef(); + n7 = nodeService.createNode(n2, ASSOC_TYPE_QNAME, QName.createQName("{namespace}seven"), testSuperType, getOrderProperties()).getChildRef(); + n8 = nodeService.createNode(n2, ASSOC_TYPE_QNAME, QName.createQName("{namespace}eight-2"), testSuperType, getOrderProperties()).getChildRef(); + n9 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}nine"), testSuperType, getOrderProperties()).getChildRef(); + n10 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}ten"), testSuperType, getOrderProperties()).getChildRef(); + n11 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}eleven"), testSuperType, getOrderProperties()).getChildRef(); + n12 = nodeService.createNode(n5, ASSOC_TYPE_QNAME, QName.createQName("{namespace}twelve"), testSuperType, getOrderProperties()).getChildRef(); + n13 = nodeService.createNode(n12, ASSOC_TYPE_QNAME, QName.createQName("{namespace}thirteen"), testSuperType, getOrderProperties()).getChildRef(); Map properties = new HashMap(); - properties.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK )); - n14 = nodeService.createNode(n13, ASSOC_TYPE_QNAME, QName.createQName("{namespace}fourteen"), - ContentModel.TYPE_CONTENT, properties).getChildRef(); + + MLText desc1 = new MLText(); + desc1.addValue(Locale.ENGLISH, "Alfresco tutorial"); + desc1.addValue(Locale.US, "Alfresco tutorial"); + + properties.put(ContentModel.PROP_CONTENT, new ContentData(null, "text/plain", 0L, "UTF-8", Locale.UK)); + properties.put(ContentModel.PROP_DESCRIPTION, desc1); + + n14 = nodeService.createNode(n13, ASSOC_TYPE_QNAME, QName.createQName("{namespace}fourteen"), ContentModel.TYPE_CONTENT, properties).getChildRef(); // nodeService.addAspect(n14, DictionaryBootstrap.ASPECT_QNAME_CONTENT, // properties); @@ -403,8 +390,10 @@ public class ADMLuceneTest extends TestCase // InputStream is = // this.getClass().getClassLoader().getResourceAsStream("test.doc"); // writer.putContent(is); - writer.putContent("The quick brown fox jumped over the lazy dog \u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF"); - //System.out.println("Size is "+writer.getSize()); + writer.putContent("The quick brown fox jumped over the lazy dog and ate the Alfresco Tutorial, in pdf format, along with the following stop words; a an and are" + + " as at be but by for if in into is it no not of on or such that the their then there these they this to was will with: " + + " and random charcters \u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF"); + System.out.println("Size is " + writer.getSize()); nodeService.addChild(rootNodeRef, n8, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}eight-0")); nodeService.addChild(n1, n8, ASSOC_TYPE_QNAME, QName.createQName("{namespace}eight-1")); @@ -472,6 +461,7 @@ public class ADMLuceneTest extends TestCase /** * Test bug fix + * * @throws Exception */ public void testSortIssue_AR_1515__AND__AR_1466() throws Exception @@ -483,8 +473,7 @@ public class ADMLuceneTest extends TestCase buildBaseIndex(); runBaseTests(); testTX.commit(); - - + testTX = transactionService.getUserTransaction(); testTX.begin(); @@ -498,7 +487,7 @@ public class ADMLuceneTest extends TestCase sp.addSort("ID", true); ResultSet results = serviceRegistry.getSearchService().query(sp); assertEquals(15, results.length()); - + String current = null; for (ResultSetRow row : results) { @@ -514,11 +503,9 @@ public class ADMLuceneTest extends TestCase current = id; } results.close(); - - + assertEquals(5, serviceRegistry.getNodeService().getChildAssocs(rootNodeRef).size()); - serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, - QName.createQName("{namespace}texas"), testSuperType).getChildRef(); + serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}texas"), testSuperType).getChildRef(); assertEquals(6, serviceRegistry.getNodeService().getChildAssocs(rootNodeRef).size()); sp = new SearchParameters(); @@ -544,10 +531,9 @@ public class ADMLuceneTest extends TestCase current = id; } results.close(); - + assertEquals(6, serviceRegistry.getNodeService().getChildAssocs(rootNodeRef).size()); - serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, - QName.createQName("{namespace}texas"), testSuperType).getChildRef(); + serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}texas"), testSuperType).getChildRef(); assertEquals(7, serviceRegistry.getNodeService().getChildAssocs(rootNodeRef).size()); sp = new SearchParameters(); @@ -575,9 +561,9 @@ public class ADMLuceneTest extends TestCase results.close(); testTX.rollback(); - + } - + /** * @throws Exception */ @@ -589,7 +575,7 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); runBaseTests(); - + ADMLuceneSearcherImpl searcher = ADMLuceneSearcherImpl.getSearcher(rootNodeRef.getStoreRef(), indexerAndSearcher); searcher.setNodeService(nodeService); searcher.setDictionaryService(dictionaryService); @@ -598,13 +584,13 @@ public class ADMLuceneTest extends TestCase ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ID:\"" + n14 + "\"", null, null); assertEquals(1, results.length()); // one node results.close(); - + nodeService.addAspect(n14, aspectWithChildren, null); testTX.commit(); - + testTX = transactionService.getUserTransaction(); testTX.begin(); - + searcher = ADMLuceneSearcherImpl.getSearcher(rootNodeRef.getStoreRef(), indexerAndSearcher); searcher.setNodeService(nodeService); searcher.setDictionaryService(dictionaryService); @@ -614,7 +600,7 @@ public class ADMLuceneTest extends TestCase assertEquals(10, results.length()); // one node + 9 aux paths to n14 results.close(); } - + /** * @throws Exception */ @@ -634,7 +620,6 @@ public class ADMLuceneTest extends TestCase luceneFTS.resume(); } - /** * @throws Exception */ @@ -676,95 +661,70 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:five\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:common\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:common\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:two/namespace:link\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:link\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:common\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:common\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*\"", null, null); @@ -773,32 +733,25 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", null, null); assertEquals(7, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(6, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*\"", null, null); @@ -822,8 +775,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*/namespace:five/*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//.\"", null, null); @@ -859,8 +811,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//././*/././.\"", null, null); assertEquals(14, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); assertEquals(22, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//common\"", null, null); @@ -887,7 +838,6 @@ public class ADMLuceneTest extends TestCase luceneFTS.resume(); } - /** * @throws Exception */ @@ -929,90 +879,67 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:five\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:common\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:common\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:common\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:common\"", null, null); assertEquals(0, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*\"", null, null); @@ -1021,28 +948,22 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*\"", null, null); assertEquals(6, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", null, null); assertEquals(8, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*\"", null, null); @@ -1066,8 +987,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*/namespace:five/*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//.\"", null, null); @@ -1103,8 +1023,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//././*/././.\"", null, null); assertEquals(14, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); assertEquals(24, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//common\"", null, null); @@ -1141,8 +1060,7 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); - ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}testFind"), testSuperType); + ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}testFind"), testSuperType); testTX.commit(); ADMLuceneSearcherImpl searcher = ADMLuceneSearcherImpl.getSearcher(rootNodeRef.getStoreRef(), indexerAndSearcher); @@ -1166,8 +1084,7 @@ public class ADMLuceneTest extends TestCase HashSet refs = new HashSet(); for (int j = 0; j < i; j++) { - ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}test"), testSuperType); + ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}test"), testSuperType); refs.add(test); } @@ -1199,8 +1116,7 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); - ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}testFind"), testSuperType); + ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}testFind"), testSuperType); testTX.commit(); testTX = transactionService.getUserTransaction(); testTX.begin(); @@ -1216,7 +1132,7 @@ public class ADMLuceneTest extends TestCase assertEquals(1, results.length()); results.close(); testTX.commit(); - + Thread runner = null; for (int i = 0; i < 20; i++) @@ -1275,8 +1191,8 @@ public class ADMLuceneTest extends TestCase HashSet refs = new HashSet(); for (int j = 0; j < i; j++) { - ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, - QName.createQName("{namespace}test_" + getName() + "_" + i + "_" +j), testSuperType); + ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}test_" + + getName() + "_" + i + "_" + j), testSuperType); refs.add(test); } @@ -1485,8 +1401,7 @@ public class ADMLuceneTest extends TestCase double duration = ((double) (end - start)) / 1E6; // duration in ms double average = duration / (double) count; System.out.println("Searched for identifier: \n" - + " count: " + count + "\n" + " average: " + average + " ms/search \n" - + " a million searches could take: " + (1E6 * average) / 1E3 / 60D + " minutes"); + + " count: " + count + "\n" + " average: " + average + " ms/search \n" + " a million searches could take: " + (1E6 * average) / 1E3 / 60D + " minutes"); // anything over 10ms is dire if (average > 10.0) { @@ -1626,8 +1541,7 @@ public class ADMLuceneTest extends TestCase Date date = null; for (ResultSetRow row : results) { - Date currentBun = DefaultTypeConverter.INSTANCE.convert(Date.class, nodeService.getProperty(row - .getNodeRef(), createdDate)); + Date currentBun = DefaultTypeConverter.INSTANCE.convert(Date.class, nodeService.getProperty(row.getNodeRef(), createdDate)); // System.out.println(currentBun); if (date != null) { @@ -1647,8 +1561,7 @@ public class ADMLuceneTest extends TestCase date = null; for (ResultSetRow row : results) { - Date currentBun = DefaultTypeConverter.INSTANCE.convert(Date.class, nodeService.getProperty(row - .getNodeRef(), createdDate)); + Date currentBun = DefaultTypeConverter.INSTANCE.convert(Date.class, nodeService.getProperty(row.getNodeRef(), createdDate)); // System.out.println(currentBun); if ((date != null) && (currentBun != null)) { @@ -1670,8 +1583,7 @@ public class ADMLuceneTest extends TestCase Double d = null; for (ResultSetRow row : results) { - Double currentBun = DefaultTypeConverter.INSTANCE.convert(Double.class, nodeService.getProperty(row - .getNodeRef(), orderDouble)); + Double currentBun = DefaultTypeConverter.INSTANCE.convert(Double.class, nodeService.getProperty(row.getNodeRef(), orderDouble)); // System.out.println( (currentBun == null ? "null" : NumericEncoder.encode(currentBun))+ " "+currentBun); if (d != null) { @@ -1691,8 +1603,7 @@ public class ADMLuceneTest extends TestCase d = null; for (ResultSetRow row : results) { - Double currentBun = DefaultTypeConverter.INSTANCE.convert(Double.class, nodeService.getProperty(row - .getNodeRef(), orderDouble)); + Double currentBun = DefaultTypeConverter.INSTANCE.convert(Double.class, nodeService.getProperty(row.getNodeRef(), orderDouble)); // System.out.println(currentBun); if ((d != null) && (currentBun != null)) { @@ -1714,8 +1625,7 @@ public class ADMLuceneTest extends TestCase Float f = null; for (ResultSetRow row : results) { - Float currentBun = DefaultTypeConverter.INSTANCE.convert(Float.class, nodeService.getProperty(row - .getNodeRef(), orderFloat)); + Float currentBun = DefaultTypeConverter.INSTANCE.convert(Float.class, nodeService.getProperty(row.getNodeRef(), orderFloat)); // System.out.println( (currentBun == null ? "null" : NumericEncoder.encode(currentBun))+ " "+currentBun); if (f != null) { @@ -1735,8 +1645,7 @@ public class ADMLuceneTest extends TestCase f = null; for (ResultSetRow row : results) { - Float currentBun = DefaultTypeConverter.INSTANCE.convert(Float.class, nodeService.getProperty(row - .getNodeRef(), orderFloat)); + Float currentBun = DefaultTypeConverter.INSTANCE.convert(Float.class, nodeService.getProperty(row.getNodeRef(), orderFloat)); // System.out.println(currentBun); if ((f != null) && (currentBun != null)) { @@ -1758,8 +1667,7 @@ public class ADMLuceneTest extends TestCase Long l = null; for (ResultSetRow row : results) { - Long currentBun = DefaultTypeConverter.INSTANCE.convert(Long.class, nodeService.getProperty(row - .getNodeRef(), orderLong)); + Long currentBun = DefaultTypeConverter.INSTANCE.convert(Long.class, nodeService.getProperty(row.getNodeRef(), orderLong)); // System.out.println( (currentBun == null ? "null" : NumericEncoder.encode(currentBun))+ " "+currentBun); if (l != null) { @@ -1779,8 +1687,7 @@ public class ADMLuceneTest extends TestCase l = null; for (ResultSetRow row : results) { - Long currentBun = DefaultTypeConverter.INSTANCE.convert(Long.class, nodeService.getProperty(row - .getNodeRef(), orderLong)); + Long currentBun = DefaultTypeConverter.INSTANCE.convert(Long.class, nodeService.getProperty(row.getNodeRef(), orderLong)); // System.out.println(currentBun); if ((l != null) && (currentBun != null)) { @@ -1802,8 +1709,7 @@ public class ADMLuceneTest extends TestCase Integer i = null; for (ResultSetRow row : results) { - Integer currentBun = DefaultTypeConverter.INSTANCE.convert(Integer.class, nodeService.getProperty(row - .getNodeRef(), orderInt)); + Integer currentBun = DefaultTypeConverter.INSTANCE.convert(Integer.class, nodeService.getProperty(row.getNodeRef(), orderInt)); // System.out.println( (currentBun == null ? "null" : NumericEncoder.encode(currentBun))+ " "+currentBun); if (i != null) { @@ -1823,8 +1729,7 @@ public class ADMLuceneTest extends TestCase i = null; for (ResultSetRow row : results) { - Integer currentBun = DefaultTypeConverter.INSTANCE.convert(Integer.class, nodeService.getProperty(row - .getNodeRef(), orderInt)); + Integer currentBun = DefaultTypeConverter.INSTANCE.convert(Integer.class, nodeService.getProperty(row.getNodeRef(), orderInt)); // System.out.println(currentBun); if ((i != null) && (currentBun != null)) { @@ -1892,8 +1797,7 @@ public class ADMLuceneTest extends TestCase searcher.setDictionaryService(dictionaryService); searcher.setTenantService(tenantService); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "\\@\\{namespace\\}property\\-2:\"valuetwo\"", null, null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@\\{namespace\\}property\\-2:\"valuetwo\"", null, null); results.close(); luceneFTS.resume(); } @@ -1926,8 +1830,7 @@ public class ADMLuceneTest extends TestCase public void testNoOp() throws Exception { luceneFTS.pause(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis() + "_1", indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_1", indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -1943,16 +1846,15 @@ public class ADMLuceneTest extends TestCase /** * Test basic index and search - * @throws Exception * + * @throws Exception * @throws InterruptedException */ public void testStandAloneIndexerCommit() throws Exception { luceneFTS.pause(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis() + "_1", indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_1", indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); @@ -1965,10 +1867,8 @@ public class ADMLuceneTest extends TestCase // //indexer.clearIndex(); indexer.createNode(new ChildAssociationRef(null, null, null, rootNodeRef)); - indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}one"), n1)); - indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}two"), n2)); + indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}one"), n1)); + indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}two"), n2)); indexer.updateNode(n1); // indexer.deleteNode(new ChildRelationshipRef(rootNode, "path", // newNode)); @@ -1982,8 +1882,7 @@ public class ADMLuceneTest extends TestCase searcher.setTenantService(tenantService); searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "\\@\\{namespace\\}property\\-2:\"valuetwo\"", null, null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@\\{namespace\\}property\\-2:\"valuetwo\"", null, null); simpleResultSetTest(results); ChildAssocRefResultSet r2 = new ChildAssocRefResultSet(nodeService, results.getNodeRefs(), null, false); @@ -2012,8 +1911,7 @@ public class ADMLuceneTest extends TestCase results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@\\{namespace\\}property\\-1:\"valueone\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@\\{namespace\\}property\\-1:\"valueone\"", null, null); assertEquals(2, results.length()); assertEquals(n2.getId(), results.getNodeRef(0).getId()); assertEquals(n1.getId(), results.getNodeRef(1).getId()); @@ -2021,8 +1919,7 @@ public class ADMLuceneTest extends TestCase assertEquals(1.0f, results.getScore(1)); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@namespace\\:property\\-1:\"valueone\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@namespace\\:property\\-1:\"valueone\"", null, null); assertEquals(2, results.length()); assertEquals(n2.getId(), results.getNodeRef(0).getId()); assertEquals(n1.getId(), results.getNodeRef(1).getId()); @@ -2077,14 +1974,12 @@ public class ADMLuceneTest extends TestCase assertEquals(1, results.length()); assertEquals(n2.getId(), results.getNodeRef(0).getId()); assertEquals(n2, results.getNodeRef(0)); - assertEquals(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}two"), n2), results.getChildAssocRef(0)); + assertEquals(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}two"), n2), results.getChildAssocRef(0)); assertEquals(1, results.getChildAssocRefs().size()); assertNotNull(results.getChildAssocRefs()); assertEquals(0, results.getRow(0).getIndex()); assertEquals(1.0f, results.getRow(0).getScore()); - assertEquals(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}two"), n2), results.getRow(0).getChildAssocRef()); + assertEquals(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}two"), n2), results.getRow(0).getChildAssocRef()); assertEquals(n2, results.getRow(0).getNodeRef()); assertEquals(QName.createQName("{namespace}two"), results.getRow(0).getQName()); assertEquals("valuetwo", results.getRow(0).getValue(QName.createQName("{namespace}property-2"))); @@ -2107,8 +2002,7 @@ public class ADMLuceneTest extends TestCase searcher.setDictionaryService(dictionaryService); searcher.setTenantService(tenantService); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@\\{namespace\\}property-1:valueone", - null, null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@\\{namespace\\}property-1:valueone", null, null); try { assertEquals(2, results.length()); @@ -2135,8 +2029,7 @@ public class ADMLuceneTest extends TestCase results.close(); } - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ID:\"" + rootNodeRef.toString() + "\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ID:\"" + rootNodeRef.toString() + "\"", null, null); try { assertEquals(1, results.length()); @@ -2150,8 +2043,8 @@ public class ADMLuceneTest extends TestCase private void buildBaseIndex() { - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis() + "_" + (new Random().nextInt()), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_" + (new Random().nextInt()), + indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -2161,14 +2054,10 @@ public class ADMLuceneTest extends TestCase indexer.setContentService(contentService); // indexer.clearIndex(); indexer.createNode(new ChildAssociationRef(null, null, null, rootNodeRef)); - indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}one"), n1)); - indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}two"), n2)); - indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}three"), n3)); - indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName - .createQName("{namespace}four"), n4)); + indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}one"), n1)); + indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}two"), n2)); + indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}three"), n3)); + indexer.createNode(new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, QName.createQName("{namespace}four"), n4)); indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n1, QName.createQName("{namespace}five"), n5)); indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n1, QName.createQName("{namespace}six"), n6)); indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName.createQName("{namespace}seven"), n7)); @@ -2177,12 +2066,8 @@ public class ADMLuceneTest extends TestCase indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n5, QName.createQName("{namespace}ten"), n10)); indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n5, QName.createQName("{namespace}eleven"), n11)); indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n5, QName.createQName("{namespace}twelve"), n12)); - indexer - .createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n12, QName.createQName("{namespace}thirteen"), - n13)); - indexer - .createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n13, QName.createQName("{namespace}fourteen"), - n14)); + indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n12, QName.createQName("{namespace}thirteen"), n13)); + indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, n13, QName.createQName("{namespace}fourteen"), n14)); indexer.prepare(); indexer.commit(); } @@ -2233,124 +2118,94 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:five\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:common\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:common\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:common\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:common\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", null, null); assertEquals(8, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*\"", null, null); assertEquals(6, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH_WITH_REPEATS:\"/namespace:*/namespace:*/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(8, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*\"", null, null); @@ -2377,8 +2232,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*/namespace:five/*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//.\"", null, null); @@ -2414,8 +2268,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//././*/././.\"", null, null); assertEquals(14, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); assertEquals(25, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//common\"", null, null); @@ -2448,20 +2301,17 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/one//thirteen/fourteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/one//thirteen/fourteen//.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/one//thirteen/fourteen//.\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/one//thirteen/fourteen//.//.\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/one//thirteen/fourteen//.//.\"", null, null); assertEquals(1, results.length()); results.close(); // Type search tests QName qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"1\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"1\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); @@ -2473,8 +2323,7 @@ public class ADMLuceneTest extends TestCase results.close(); qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"01\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"01\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); @@ -2486,8 +2335,7 @@ public class ADMLuceneTest extends TestCase results.close(); qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "@" + escapeQName(qname) + ":\"001\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + escapeQName(qname) + ":\"001\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); @@ -2499,227 +2347,190 @@ public class ADMLuceneTest extends TestCase results.close(); qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[0 TO 2]", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[0 TO 2]", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 1}", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 1}", null, null); assertEquals(0, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{1 TO 2}", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{1 TO 2}", null, null); assertEquals(0, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"2\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"2\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"02\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"02\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"002\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"002\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"0002\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"0002\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[0 TO 2]", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[0 TO 2]", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 2}", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{0 TO 2}", null, null); assertEquals(0, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "long-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{2 TO 3}", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{2 TO 3}", null, null); assertEquals(0, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.4\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.4\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3 TO 4]", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3 TO 4]", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3.3 TO 3.4]", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[3.3 TO 3.4]", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{3.3 TO 3.4}", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{3.3 TO 3.4}", null, null); assertEquals(0, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.40\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"3.40\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"03.4\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"03.4\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "float-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"03.40\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"03.40\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.6\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.6\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.6\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.6\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.60\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"5.60\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.60\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "double-ista")) + ":\"05.60\"", null, null); assertEquals(1, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "double-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[5.5 TO 5.7]", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":[5.5 TO 5.7]", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); qname = QName.createQName(TEST_NAMESPACE, "double-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.5 TO 5.6}", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.5 TO 5.6}", null, null); assertEquals(0, results.length()); results.close(); qname = QName.createQName(TEST_NAMESPACE, "double-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.6 TO 5.7}", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":{5.6 TO 5.7}", null, null); assertEquals(0, results.length()); results.close(); Date date = new Date(); String sDate = CachingDateFormat.getDateFormat().format(date); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "date-ista")) + ":\"" + sDate + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "date-ista")) + ":\"" + sDate + "\"", null, null); + assertEquals(1, results.length()); + results.close(); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "datetime-ista")) + ":\"" + sDate + "\"", null, null); + assertEquals(1, results.length()); + results.close(); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "boolean-ista")) + ":\"true\"", null, null); + assertEquals(1, results.length()); + results.close(); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "qname-ista")) + ":\"{wibble}wobble\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "datetime-ista")) + ":\"" + sDate + "\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "category-ista")) + ":\"" + + DefaultTypeConverter.INSTANCE.convert(String.class, new NodeRef(rootNodeRef.getStoreRef(), "CategoryId")) + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "boolean-ista")) + ":\"true\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "noderef-ista")) + ":\"" + n1 + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "qname-ista")) + ":\"{wibble}wobble\"", null, null); - assertEquals(1, results.length()); - results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "category-ista")) - + ":\"" - + DefaultTypeConverter.INSTANCE.convert(String.class, new NodeRef(rootNodeRef.getStoreRef(), - "CategoryId")) + "\"", null, null); - assertEquals(1, results.length()); - results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "noderef-ista")) + ":\"" + n1 + "\"", null, null); - assertEquals(1, results.length()); - results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "path-ista")) + ":\"" + nodeService.getPath(n3) + "\"", + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "path-ista")) + ":\"" + nodeService.getPath(n3) + "\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "path-ista"))); results.close(); // d:any - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "any-many-ista")) + ":\"100\"", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "any-many-ista")) + ":\"100\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "any-many-ista"))); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "any-many-ista")) + ":\"anyValueAsString\"", - null, null); + + results = searcher + .query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "any-many-ista")) + ":\"anyValueAsString\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "any-many-ista"))); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "any-many-ista")) + ":\"nintc\"", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "any-many-ista")) + ":\"nintc\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "any-many-ista"))); results.close(); - + // multi ml text - + QName multimlQName = QName.createQName(TEST_NAMESPACE, "mltext-many-ista"); - + SearchParameters sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2728,7 +2539,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2737,7 +2548,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2746,7 +2557,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2755,7 +2566,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2764,7 +2575,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2773,7 +2584,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2782,7 +2593,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2791,7 +2602,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2800,7 +2611,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2810,10 +2621,10 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + // multivalued content in type d:any - // This should not be indexed as we can not know what to do with content here. - + // This should not be indexed as we can not know what to do with content here. + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -2821,119 +2632,95 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - + // locale - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":\"en_GB_\"", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":\"en_GB_\"", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "path-ista"))); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":en_GB_", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":en_GB_", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "path-ista"))); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":en_*", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":en_*", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "path-ista"))); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":*_GB_*", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":*_GB_*", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "path-ista"))); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":*_gb_*", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(QName.createQName(TEST_NAMESPACE, "locale-ista")) + ":*_gb_*", null, null); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(QName.createQName(TEST_NAMESPACE, "path-ista"))); results.close(); - + // Type - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" + testType.toString() + "\"", null, - null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" + testType.toString() + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" - + testType.toPrefixString(namespacePrefixResolver) + "\"", null, null); - assertEquals(1, results.length()); - results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" + testType.toString() + "\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" + testType.toPrefixString(namespacePrefixResolver) + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" - + testType.toPrefixString(namespacePrefixResolver) + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" + testType.toString() + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" + testSuperType.toString() + "\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" + testType.toPrefixString(namespacePrefixResolver) + "\"", null, null); + assertEquals(1, results.length()); + results.close(); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" + testSuperType.toString() + "\"", null, null); assertEquals(13, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" - + testSuperType.toPrefixString(namespacePrefixResolver) + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TYPE:\"" + testSuperType.toPrefixString(namespacePrefixResolver) + "\"", null, null); assertEquals(13, results.length()); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" + testSuperType.toString() + "\"", - null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" + testSuperType.toString() + "\"", null, null); assertEquals(12, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" - + testSuperType.toPrefixString(namespacePrefixResolver) + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "EXACTTYPE:\"" + testSuperType.toPrefixString(namespacePrefixResolver) + "\"", null, null); assertEquals(12, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + testAspect.toString() + "\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + testAspect.toString() + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" - + testAspect.toPrefixString(namespacePrefixResolver) + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + testAspect.toPrefixString(namespacePrefixResolver) + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + testAspect.toString() + "\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + testAspect.toString() + "\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" - + testAspect.toPrefixString(namespacePrefixResolver) + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "ASPECT:\"" + testAspect.toPrefixString(namespacePrefixResolver) + "\"", null, null); assertEquals(1, results.length()); results.close(); // Test for AR-384 - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:fox AND TYPE:\"" - + ContentModel.PROP_CONTENT.toString() + "\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:fox AND TYPE:\"" + ContentModel.PROP_CONTENT.toString() + "\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:fox cm\\:name:fox", null, null); assertEquals(1, results.length()); results.close(); - - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:fo AND TYPE:\"" - + ContentModel.PROP_CONTENT.toString() + "\"", null, null); + + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:fo AND TYPE:\"" + ContentModel.PROP_CONTENT.toString() + "\"", null, null); assertEquals(0, results.length()); results.close(); @@ -2942,11 +2729,11 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"the\"", null, null); assertEquals(0, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"and\"", null, null); assertEquals(0, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"over the lazy\"", null, null); assertEquals(1, results.length()); results.close(); @@ -2954,17 +2741,17 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"over a lazy\"", null, null); assertEquals(1, results.length()); results.close(); - + // Test wildcards in text - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:laz*", null, null); assertEquals(1, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:laz~", null, null); assertEquals(1, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:la?y", null, null); assertEquals(1, results.length()); results.close(); @@ -2972,59 +2759,53 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:?a?y", null, null); assertEquals(1, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:*azy", null, null); assertEquals(1, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:*az*", null, null); assertEquals(1, results.length()); results.close(); - + // Accents - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"\u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF\"", null, null); assertEquals(1, results.length()); results.close(); - + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"aeidnouy\"", null, null); assertEquals(1, results.length()); results.close(); - + // FTS test results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"fox\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":\"fox\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":\"fox\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".mimetype:\"text/plain\"", null, - null); + results = searcher + .query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".mimetype:\"text/plain\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".locale:\"en_GB\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".locale:\"en_GB\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".locale:en_*", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".locale:en_*", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".locale:e*_GB", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".locale:e*_GB", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".size:\"62\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ".size:\"298\"", null, null); assertEquals(1, results.length()); results.close(); @@ -3042,7 +2823,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3050,23 +2831,619 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); sp.setQuery("TEXT:\"fox\""); - sp.addTextAttribute("@"+ContentModel.PROP_NAME.toString()); + sp.addTextAttribute("@" + ContentModel.PROP_NAME.toString()); results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - - sp.addTextAttribute("@"+ContentModel.PROP_CONTENT.toString()); + + sp.addTextAttribute("@" + ContentModel.PROP_CONTENT.toString()); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + // Wild cards in TEXT phrase + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfresc?\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfres??\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfre???\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfr????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alf?????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"al??????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"a???????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"a??re???\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"?lfresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"??fresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"???resco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"???res?o\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"????e?co\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"????e?c?\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"???????o\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"???re???\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfresc*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfres*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfre*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfr*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alf*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"al*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"a*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"a****\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*lfresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*fresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*resco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*esco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*sco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*co\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*o\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"****lf**sc***\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*??*lf**sc***\""); + results = searcher.query(sp); + assertEquals(0, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alfresc*tutorial\""); + results = searcher.query(sp); + assertEquals(0, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"alf* tut*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("TEXT:\"*co *al\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + // Wild cards in ML phrases + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfresc?\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) +":\"alfres??\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfre???\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfr????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alf?????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"al??????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"a???????\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"a??re???\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"?lfresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"??fresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"???resco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"???res?o\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"????e?co\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"????e?c?\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"???????o\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"???re???\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfresc*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfres*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfre*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfr*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alf*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"al*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"a*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"a****\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*lfresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*fresco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*resco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*esco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*sco\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*co\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*o\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"****lf**sc***\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*??*lf**sc***\""); + results = searcher.query(sp); + assertEquals(0, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alfresc*tutorial\""); + results = searcher.query(sp); + assertEquals(0, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"alf* tut*\""); + results = searcher.query(sp); + assertEquals(1, results.length()); + results.close(); + + sp = new SearchParameters(); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setLanguage("lucene"); + sp.setQuery("@" + LuceneQueryParser.escape(ContentModel.PROP_DESCRIPTION.toString()) + ":\"*co *al\""); results = searcher.query(sp); assertEquals(1, results.length()); results.close(); // ALL and its configuration - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3074,21 +3451,21 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); sp.setQuery("ALL:\"fox\""); - sp.addAllAttribute("@"+ContentModel.PROP_NAME.toString()); + sp.addAllAttribute("@" + ContentModel.PROP_NAME.toString()); results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - - sp.addAllAttribute("@"+ContentModel.PROP_CONTENT.toString()); + + sp.addAllAttribute("@" + ContentModel.PROP_CONTENT.toString()); results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3096,9 +3473,9 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + // Search by data type - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3106,7 +3483,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3116,7 +3493,7 @@ public class ADMLuceneTest extends TestCase results.close(); // locale serach in en_US for en_UK - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3125,7 +3502,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + // Direct ML tests QName mlQName = QName.createQName(TEST_NAMESPACE, "ml"); @@ -3138,7 +3515,6 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); @@ -3148,7 +3524,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3294,7 +3670,7 @@ public class ADMLuceneTest extends TestCase results.close(); // Test ISNULL/ISNOTNULL - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3302,7 +3678,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3310,7 +3686,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3318,7 +3694,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(0, results.length()); results.close(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage("lucene"); @@ -3326,9 +3702,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(sp); assertEquals(1, results.length()); results.close(); - - - + // Test non field queries results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:fox", null, null); @@ -3347,46 +3721,38 @@ public class ADMLuceneTest extends TestCase assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":fox", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":fox", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":fo*", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":fo*", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":f*x", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":f*x", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":*ox", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toString()) + ":*ox", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":fox", + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":fox", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":fo*", + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":fo*", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":f*x", + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":f*x", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" - + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":*ox", + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "@" + LuceneQueryParser.escape(ContentModel.PROP_CONTENT.toPrefixString(namespacePrefixResolver)) + ":*ox", null, null); assertEquals(1, results.length()); results.close(); @@ -3411,18 +3777,14 @@ public class ADMLuceneTest extends TestCase results.close(); // TODO: should not have a null property type definition - QueryParameterDefImpl paramDef = new QueryParameterDefImpl(QName.createQName("alf:lemur", - namespacePrefixResolver), (DataTypeDefinition) null, true, "fox"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"${alf:lemur}\"", null, - new QueryParameterDefinition[] { paramDef }); + QueryParameterDefImpl paramDef = new QueryParameterDefImpl(QName.createQName("alf:lemur", namespacePrefixResolver), (DataTypeDefinition) null, true, "fox"); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "TEXT:\"${alf:lemur}\"", null, new QueryParameterDefinition[] { paramDef }); assertEquals(1, results.length()); results.close(); - paramDef = new QueryParameterDefImpl(QName.createQName("alf:intvalue", namespacePrefixResolver), - (DataTypeDefinition) null, true, "1"); + paramDef = new QueryParameterDefImpl(QName.createQName("alf:intvalue", namespacePrefixResolver), (DataTypeDefinition) null, true, "1"); qname = QName.createQName(TEST_NAMESPACE, "int-ista"); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(qname) + ":\"${alf:intvalue}\"", null, new QueryParameterDefinition[] { paramDef }); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" + escapeQName(qname) + ":\"${alf:intvalue}\"", null, new QueryParameterDefinition[] { paramDef }); assertEquals(1, results.length()); assertNotNull(results.getRow(0).getValue(qname)); results.close(); @@ -3508,10 +3870,8 @@ public class ADMLuceneTest extends TestCase results.close(); luceneFTS.resume(); - QueryParameterDefinition paramDef = new QueryParameterDefImpl(QName.createQName("alf:query", - namespacePrefixResolver), (DataTypeDefinition) null, true, "//./*"); - results = searcher.query(rootNodeRef.getStoreRef(), "xpath", "${alf:query}", null, - new QueryParameterDefinition[] { paramDef }); + QueryParameterDefinition paramDef = new QueryParameterDefImpl(QName.createQName("alf:query", namespacePrefixResolver), (DataTypeDefinition) null, true, "//./*"); + results = searcher.query(rootNodeRef.getStoreRef(), "xpath", "${alf:query}", null, new QueryParameterDefinition[] { paramDef }); assertEquals(14, results.length()); results.close(); } @@ -3548,8 +3908,7 @@ public class ADMLuceneTest extends TestCase runBaseTests(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis(), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -3630,81 +3989,61 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:five\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, null); assertEquals(0, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*\"", null, null); @@ -3713,28 +4052,22 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", null, null); assertEquals(6, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); assertEquals(3, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*\"", null, null); @@ -3758,8 +4091,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*/namespace:five/*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//.\"", null, null); @@ -3795,8 +4127,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//././*/././.\"", null, null); assertEquals(13, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); assertEquals(16, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//common\"", null, null); @@ -3828,15 +4159,13 @@ public class ADMLuceneTest extends TestCase */ public void testAddEscapedChild() throws Exception { - String COMPLEX_LOCAL_NAME = "\u0020\u0060\u00ac\u00a6\u0021\"\u00a3\u0024\u0025\u005e\u0026\u002a\u0028\u0029\u002d\u005f\u003d\u002b\t\n\\\u0000\u005b\u005d\u007b\u007d\u003b\u0027\u0023\u003a\u0040\u007e\u002c\u002e\u002f\u003c\u003e\u003f\\u007c\u005f\u0078\u0054\u0036\u0035\u0041\u005f"; - + String COMPLEX_LOCAL_NAME = "\u0020\u0060\u00ac\u00a6\u0021\"\u00a3\u0024\u0025\u005e\u0026\u002a\u0028\u0029\u002d\u005f\u003d\u002b\t\n\\\u0000\u005b\u005d\u007b\u007d\u003b\u0027\u0023\u003a\u0040\u007e\u002c\u002e\u002f\u003c\u003e\u003f\\u007c\u005f\u0078\u0054\u0036\u0035\u0041\u005f"; luceneFTS.pause(); buildBaseIndex(); runBaseTests(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis(), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -3845,8 +4174,7 @@ public class ADMLuceneTest extends TestCase indexer.setFullTextSearchIndexer(luceneFTS); indexer.setContentService(contentService); - ChildAssociationRef car = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}" + COMPLEX_LOCAL_NAME), testSuperType); + ChildAssociationRef car = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}" + COMPLEX_LOCAL_NAME), testSuperType); indexer.createNode(car); indexer.commit(); @@ -3856,8 +4184,7 @@ public class ADMLuceneTest extends TestCase searcher.setDictionaryService(dictionaryService); searcher.setTenantService(tenantService); searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:" - + ISO9075.encode(COMPLEX_LOCAL_NAME) + "\"", null, null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:" + ISO9075.encode(COMPLEX_LOCAL_NAME) + "\"", null, null); assertEquals(1, results.length()); results.close(); } @@ -3873,8 +4200,7 @@ public class ADMLuceneTest extends TestCase buildBaseIndex(); runBaseTests(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis(), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -3883,8 +4209,7 @@ public class ADMLuceneTest extends TestCase indexer.setFullTextSearchIndexer(luceneFTS); indexer.setContentService(contentService); - ChildAssociationRef car = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}" + COMPLEX_LOCAL_NAME), testSuperType); + ChildAssociationRef car = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}" + COMPLEX_LOCAL_NAME), testSuperType); indexer.createNode(car); indexer.commit(); @@ -3894,8 +4219,7 @@ public class ADMLuceneTest extends TestCase searcher.setDictionaryService(dictionaryService); searcher.setTenantService(tenantService); searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:" - + ISO9075.encode(COMPLEX_LOCAL_NAME) + "\"", null, null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:" + ISO9075.encode(COMPLEX_LOCAL_NAME) + "\"", null, null); assertEquals(1, results.length()); results.close(); } @@ -3913,8 +4237,7 @@ public class ADMLuceneTest extends TestCase runBaseTests(); testTX.commit(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis(), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); indexer.setDictionaryService(dictionaryService); @@ -3957,81 +4280,61 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:five\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, null); assertEquals(0, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*\"", null, null); @@ -4043,28 +4346,22 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); assertEquals(3, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*\"", null, null); @@ -4091,8 +4388,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*/namespace:five/*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//.\"", null, null); @@ -4128,8 +4424,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//././*/././.\"", null, null); assertEquals(12, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); assertEquals(14, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//common\"", null, null); @@ -4162,8 +4457,7 @@ public class ADMLuceneTest extends TestCase buildBaseIndex(); runBaseTests(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis(), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -4173,8 +4467,7 @@ public class ADMLuceneTest extends TestCase indexer.setContentService(contentService); nodeService.removeChild(n2, n13); - indexer.deleteChildRelationship(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName - .createQName("{namespace}link"), n13)); + indexer.deleteChildRelationship(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName.createQName("{namespace}link"), n13)); indexer.commit(); @@ -4201,81 +4494,61 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:five\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:one\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:two\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:six\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:seven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-1\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-2\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-2\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-1\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:two/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:eight-0\"", null, null); assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:ten\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:eleven\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:five/namespace:twelve/namespace:thirteen/namespace:fourteen\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*\"", null, null); @@ -4284,32 +4557,25 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*\"", null, null); assertEquals(7, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH_WITH_REPEATS:\"/namespace:*/namespace:*/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"/namespace:*/namespace:*/namespace:*\"", null, null); assertEquals(6, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*\"", null, null); assertEquals(4, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:*/namespace:five/namespace:*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/namespace:*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*\"", null, null); @@ -4336,8 +4602,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/*/namespace:five/*\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"/namespace:one/*/namespace:nine\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//.\"", null, null); @@ -4373,8 +4638,7 @@ public class ADMLuceneTest extends TestCase results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//././*/././.\"", null, null); assertEquals(14, results.length()); results.close(); - results = searcher - .query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//././*/././.\"", null, null); assertEquals(22, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//common\"", null, null); @@ -4408,8 +4672,7 @@ public class ADMLuceneTest extends TestCase assertEquals(1, results.length()); results.close(); - indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), - indexerAndSearcher); + indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -4419,8 +4682,7 @@ public class ADMLuceneTest extends TestCase indexer.setContentService(contentService); nodeService.addChild(n2, n13, ASSOC_TYPE_QNAME, QName.createQName("{namespace}link")); - indexer.createChildRelationship(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName - .createQName("{namespace}link"), n13)); + indexer.createChildRelationship(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName.createQName("{namespace}link"), n13)); indexer.commit(); @@ -4443,23 +4705,19 @@ public class ADMLuceneTest extends TestCase searcher.setTenantService(tenantService); searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//namespace:link//.\"", null, - null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//namespace:link//.\"", null, null); assertEquals(2, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//namespace:link//.\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//namespace:link//.\"", null, null); assertEquals(3, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//namespace:renamed_link//.\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//namespace:renamed_link//.\"", null, null); assertEquals(0, results.length()); results.close(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis(), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis(), indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -4471,9 +4729,8 @@ public class ADMLuceneTest extends TestCase nodeService.removeChild(n2, n13); nodeService.addChild(n2, n13, ASSOC_TYPE_QNAME, QName.createQName("{namespace}renamed_link")); - indexer.updateChildRelationship(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName.createQName("namespace", - "link"), n13), new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName.createQName("namespace", - "renamed_link"), n13)); + indexer.updateChildRelationship(new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, QName.createQName("namespace", "link"), n13), new ChildAssociationRef(ASSOC_TYPE_QNAME, n2, + QName.createQName("namespace", "renamed_link"), n13)); indexer.commit(); @@ -4488,12 +4745,10 @@ public class ADMLuceneTest extends TestCase assertEquals(0, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//namespace:renamed_link//.\"", null, - null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH:\"//namespace:renamed_link//.\"", null, null); assertEquals(2, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", - "PATH_WITH_REPEATS:\"//namespace:renamed_link//.\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PATH_WITH_REPEATS:\"//namespace:renamed_link//.\"", null, null); assertEquals(3, results.length()); results.close(); luceneFTS.resume(); @@ -4515,27 +4770,24 @@ public class ADMLuceneTest extends TestCase searcher.setTenantService(tenantService); ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) - + ":\"KEYONE\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"KEYONE\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) - + ":\"KEYUNSTORED\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + ":\"KEYUNSTORED\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) - + ":\"KEYTWO\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) + ":\"KEYTWO\"", null, null); assertEquals(0, results.length()); results.close(); // Do index - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis() + "_" + (new Random().nextInt()), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_" + (new Random().nextInt()), + indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -4553,20 +4805,17 @@ public class ADMLuceneTest extends TestCase searcher.setTenantService(tenantService); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) - + ":\"keyone\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"keyone\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) - + ":\"keytwo\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) + ":\"keytwo\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) - + ":\"keyunstored\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + ":\"keyunstored\"", null, null); assertEquals(1, results.length()); results.close(); @@ -4590,20 +4839,17 @@ public class ADMLuceneTest extends TestCase searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) - + ":\"KEYONE\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"KEYONE\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) - + ":\"KEYUNSTORED\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + ":\"KEYUNSTORED\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) - + ":\"KEYTWO\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) + ":\"KEYTWO\"", null, null); assertEquals(0, results.length()); results.close(); @@ -4616,13 +4862,12 @@ public class ADMLuceneTest extends TestCase searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) - + ":\"keyone\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-atomic")) + ":\"keyone\"", null, null); assertEquals(1, results.length()); results.close(); - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis() + "_" + (new Random().nextInt()), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_" + (new Random().nextInt()), + indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -4643,14 +4888,12 @@ public class ADMLuceneTest extends TestCase Thread.sleep(35000); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) - + ":\"keytwo\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-stored-tokenised-nonatomic")) + ":\"keytwo\"", null, null); assertEquals(1, results.length()); results.close(); results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "\\@" - + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) - + ":\"KEYUNSTORED\"", null, null); + + escapeQName(QName.createQName(TEST_NAMESPACE, "text-indexed-unstored-tokenised-atomic")) + ":\"KEYUNSTORED\"", null, null); assertEquals(1, results.length()); results.close(); @@ -4677,22 +4920,17 @@ public class ADMLuceneTest extends TestCase searcher.setDictionaryService(dictionaryService); searcher.setTenantService(tenantService); - ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PARENT:\"" - + rootNodeRef.toString() + "\"", null, null); + ResultSet results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "PARENT:\"" + rootNodeRef.toString() + "\"", null, null); assertEquals(5, results.length()); results.close(); - results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "+PARENT:\"" - + rootNodeRef.toString() + "\" +QNAME:\"one\"", null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", "+PARENT:\"" + rootNodeRef.toString() + "\" +QNAME:\"one\"", null, null); assertEquals(1, results.length()); results.close(); - results = searcher - .query( - rootNodeRef.getStoreRef(), - "lucene", - "( +TYPE:\"{http://www.alfresco.org/model/content/1.0}content\" +@\\{http\\://www.alfresco.org/model/content/1.0\\}name:\"content woof\") OR TEXT:\"content\"", - null, null); + results = searcher.query(rootNodeRef.getStoreRef(), "lucene", + "( +TYPE:\"{http://www.alfresco.org/model/content/1.0}content\" +@\\{http\\://www.alfresco.org/model/content/1.0\\}name:\"content woof\") OR TEXT:\"content\"", + null, null); luceneFTS.resume(); } @@ -4715,8 +4953,7 @@ public class ADMLuceneTest extends TestCase testTX.commit(); UserTransaction tx = transactionService.getUserTransaction(); tx.begin(); - ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}testFind"), testSuperType); + ChildAssociationRef testFind = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}testFind"), testSuperType); tx.commit(); ADMLuceneSearcherImpl searcher = ADMLuceneSearcherImpl.getSearcher(rootNodeRef.getStoreRef(), indexerAndSearcher); @@ -4734,8 +4971,7 @@ public class ADMLuceneTest extends TestCase { UserTransaction tx1 = transactionService.getUserTransaction(); tx1.begin(); - ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName - .createQName("{namespace}test"), testSuperType); + ChildAssociationRef test = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}test"), testSuperType); tx1.commit(); UserTransaction tx2 = transactionService.getUserTransaction(); @@ -4752,18 +4988,18 @@ public class ADMLuceneTest extends TestCase tx3.commit(); } -// public void testMany() throws Exception -// { -// for(int i = 0; i < 100; i++) -// { -// testReadAgainstDelta(); -// System.out.println("At "+i); -// testTX.rollback(); -// testTX = transactionService.getUserTransaction(); -// testTX.begin(); -// } -// } - + // public void testMany() throws Exception + // { + // for(int i = 0; i < 100; i++) + // { + // testReadAgainstDelta(); + // System.out.println("At "+i); + // testTX.rollback(); + // testTX = transactionService.getUserTransaction(); + // testTX.begin(); + // } + // } + /** * @throws Exception */ @@ -4809,7 +5045,7 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage(SearchService.LANGUAGE_LUCENE); @@ -4821,7 +5057,7 @@ public class ADMLuceneTest extends TestCase results.close(); testTX.rollback(); - + // Delete testTX = transactionService.getUserTransaction(); @@ -4856,7 +5092,6 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); - sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage(SearchService.LANGUAGE_LUCENE); @@ -4868,7 +5103,7 @@ public class ADMLuceneTest extends TestCase results.close(); testTX.rollback(); - + // Create testTX = transactionService.getUserTransaction(); @@ -4877,8 +5112,7 @@ public class ADMLuceneTest extends TestCase runBaseTests(); assertEquals(5, serviceRegistry.getNodeService().getChildAssocs(rootNodeRef).size()); - serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, - QName.createQName("{namespace}texas"), testSuperType).getChildRef(); + serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}texas"), testSuperType).getChildRef(); assertEquals(6, serviceRegistry.getNodeService().getChildAssocs(rootNodeRef).size()); sp = new SearchParameters(); @@ -4894,7 +5128,7 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage(SearchService.LANGUAGE_LUCENE); @@ -4906,7 +5140,7 @@ public class ADMLuceneTest extends TestCase results.close(); testTX.rollback(); - + // update property testTX = transactionService.getUserTransaction(); @@ -4939,7 +5173,6 @@ public class ADMLuceneTest extends TestCase results.close(); testTX.rollback(); - testTX = transactionService.getUserTransaction(); testTX.begin(); @@ -4954,7 +5187,7 @@ public class ADMLuceneTest extends TestCase assertEquals(2, results.length()); results.close(); - + testTX.rollback(); // Add and delete @@ -4984,8 +5217,7 @@ public class ADMLuceneTest extends TestCase assertEquals(15, results.length()); results.close(); - NodeRef created = serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, - QName.createQName("{namespace}texas"), testSuperType).getChildRef(); + NodeRef created = serviceRegistry.getNodeService().createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, QName.createQName("{namespace}texas"), testSuperType).getChildRef(); sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); @@ -5029,7 +5261,7 @@ public class ADMLuceneTest extends TestCase testTX = transactionService.getUserTransaction(); testTX.begin(); - + sp = new SearchParameters(); sp.addStore(rootNodeRef.getStoreRef()); sp.setLanguage(SearchService.LANGUAGE_LUCENE); @@ -5044,8 +5276,8 @@ public class ADMLuceneTest extends TestCase private void runPerformanceTest(double time, boolean clear) { - ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" - + System.currentTimeMillis() + "_" + (new Random().nextInt()), indexerAndSearcher); + ADMLuceneIndexerImpl indexer = ADMLuceneIndexerImpl.getUpdateIndexer(rootNodeRef.getStoreRef(), "delta" + System.currentTimeMillis() + "_" + (new Random().nextInt()), + indexerAndSearcher); indexer.setMaxAtomicTransformationTime(1000000); indexer.setNodeService(nodeService); // indexer.setLuceneIndexLock(luceneIndexLock); @@ -5073,8 +5305,7 @@ public class ADMLuceneTest extends TestCase } QName qname = QName.createQName("{namespace}a_" + i); - NodeRef ref = nodeService.createNode(rootNodeRef, ASSOC_TYPE_QNAME, qname, ContentModel.TYPE_CONTAINER) - .getChildRef(); + NodeRef ref = nodeService.createNode(rootNodeRef, ASSOC_TYPE_QNAME, qname, ContentModel.TYPE_CONTAINER).getChildRef(); indexer.createNode(new ChildAssociationRef(ASSOC_TYPE_QNAME, rootNodeRef, qname, ref)); } @@ -5122,10 +5353,9 @@ public class ADMLuceneTest extends TestCase // test.dictionaryService.getType(test.nodeService.getType(test.rootNodeRef)).getDefaultAspects(); } - + /** * @author andyh - * */ public static class UnknownDataType implements Serializable { @@ -5134,6 +5364,6 @@ public class ADMLuceneTest extends TestCase * */ private static final long serialVersionUID = -6729690518573349055L; - + } } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java index 6ef4a59119..1b576956bf 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneQueryParser.java @@ -29,10 +29,13 @@ import java.io.StringReader; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Set; +import java.util.Vector; import org.alfresco.i18n.I18NUtil; import org.alfresco.repo.search.MLAnalysisMode; @@ -55,11 +58,17 @@ import org.apache.log4j.Logger; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.Token; import org.apache.lucene.analysis.TokenStream; +import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; +import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.MultiPhraseQuery; +import org.apache.lucene.search.PhraseQuery; import org.apache.lucene.search.Query; import org.apache.lucene.search.RangeQuery; import org.apache.lucene.search.TermQuery; +import org.apache.lucene.search.WildcardQuery; +import org.apache.lucene.search.WildcardTermEnum; import org.apache.lucene.search.BooleanClause.Occur; import org.saxpath.SAXPathException; @@ -79,6 +88,8 @@ public class LuceneQueryParser extends QueryParser private LuceneConfig config; + private IndexReader indexReader; + /** * Parses a query string, returning a {@link org.apache.lucene.search.Query}. * @@ -94,7 +105,7 @@ public class LuceneQueryParser extends QueryParser */ static public Query parse(String query, String field, Analyzer analyzer, NamespacePrefixResolver namespacePrefixResolver, DictionaryService dictionaryService, TenantService tenantService, - Operator defaultOperator, SearchParameters searchParameters, LuceneConfig config) throws ParseException + Operator defaultOperator, SearchParameters searchParameters, LuceneConfig config, IndexReader indexReader) throws ParseException { if (s_logger.isDebugEnabled()) { @@ -107,6 +118,7 @@ public class LuceneQueryParser extends QueryParser parser.setTenantService(tenantService); parser.setSearchParameters(searchParameters); parser.setLuceneConfig(config); + parser.setIndexReader(indexReader); // TODO: Apply locale contstraints at the top level if required for the non ML doc types. Query result = parser.parse(query); if (s_logger.isDebugEnabled()) @@ -121,6 +133,11 @@ public class LuceneQueryParser extends QueryParser this.config = config; } + private void setIndexReader(IndexReader indexReader) + { + this.indexReader = indexReader; + } + private void setSearchParameters(SearchParameters searchParameters) { this.searchParameters = searchParameters; @@ -184,8 +201,7 @@ public class LuceneQueryParser extends QueryParser Set text = searchParameters.getTextAttributes(); if ((text == null) || (text.size() == 0)) { - Collection contentAttributes = dictionaryService - .getAllProperties(DataTypeDefinition.CONTENT); + Collection contentAttributes = dictionaryService.getAllProperties(DataTypeDefinition.CONTENT); BooleanQuery query = new BooleanQuery(); for (QName qname : contentAttributes) { @@ -294,14 +310,12 @@ public class LuceneQueryParser extends QueryParser if (colonPosition == -1) { // use the default namespace - target = dictionaryService.getType(QName.createQName(namespacePrefixResolver - .getNamespaceURI(""), queryText)); + target = dictionaryService.getType(QName.createQName(namespacePrefixResolver.getNamespaceURI(""), queryText)); } else { // find the prefix - target = dictionaryService.getType(QName.createQName(namespacePrefixResolver - .getNamespaceURI(queryText.substring(0, colonPosition)), queryText + target = dictionaryService.getType(QName.createQName(namespacePrefixResolver.getNamespaceURI(queryText.substring(0, colonPosition)), queryText .substring(colonPosition + 1))); } } @@ -316,8 +330,7 @@ public class LuceneQueryParser extends QueryParser TypeDefinition current = dictionaryService.getType(classRef); while ((current != null) && !current.getName().equals(targetQName)) { - current = (current.getParentName() == null) ? null : dictionaryService.getType(current - .getParentName()); + current = (current.getParentName() == null) ? null : dictionaryService.getType(current.getParentName()); } if (current != null) { @@ -348,14 +361,12 @@ public class LuceneQueryParser extends QueryParser if (colonPosition == -1) { // use the default namespace - target = dictionaryService.getType(QName.createQName(namespacePrefixResolver - .getNamespaceURI(""), queryText)); + target = dictionaryService.getType(QName.createQName(namespacePrefixResolver.getNamespaceURI(""), queryText)); } else { // find the prefix - target = dictionaryService.getType(QName.createQName(namespacePrefixResolver - .getNamespaceURI(queryText.substring(0, colonPosition)), queryText + target = dictionaryService.getType(QName.createQName(namespacePrefixResolver.getNamespaceURI(queryText.substring(0, colonPosition)), queryText .substring(colonPosition + 1))); } } @@ -381,14 +392,12 @@ public class LuceneQueryParser extends QueryParser if (colonPosition == -1) { // use the default namespace - target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver - .getNamespaceURI(""), queryText)); + target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver.getNamespaceURI(""), queryText)); } else { // find the prefix - target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver - .getNamespaceURI(queryText.substring(0, colonPosition)), queryText + target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver.getNamespaceURI(queryText.substring(0, colonPosition)), queryText .substring(colonPosition + 1))); } } @@ -400,8 +409,7 @@ public class LuceneQueryParser extends QueryParser AspectDefinition current = dictionaryService.getAspect(classRef); while ((current != null) && !current.getName().equals(targetQName)) { - current = (current.getParentName() == null) ? null : dictionaryService.getAspect(current - .getParentName()); + current = (current.getParentName() == null) ? null : dictionaryService.getAspect(current.getParentName()); } if (current != null) { @@ -433,14 +441,12 @@ public class LuceneQueryParser extends QueryParser if (colonPosition == -1) { // use the default namespace - target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver - .getNamespaceURI(""), queryText)); + target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver.getNamespaceURI(""), queryText)); } else { // find the prefix - target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver - .getNamespaceURI(queryText.substring(0, colonPosition)), queryText + target = dictionaryService.getAspect(QName.createQName(namespacePrefixResolver.getNamespaceURI(queryText.substring(0, colonPosition)), queryText .substring(colonPosition + 1))); } } @@ -516,7 +522,7 @@ public class LuceneQueryParser extends QueryParser } else { - return super.getFieldQuery(field, queryText); + return getFieldQueryImpl(field, queryText); } } @@ -540,14 +546,13 @@ public class LuceneQueryParser extends QueryParser } else { - return super.getFieldQuery(field, queryText); + return getFieldQueryImpl(field, queryText); } } else if (dictionaryService.getDataType(QName.createQName(expandFieldName(field))) != null) { - Collection contentAttributes = dictionaryService.getAllProperties(dictionaryService.getDataType( - QName.createQName(expandFieldName(field))).getName()); + Collection contentAttributes = dictionaryService.getAllProperties(dictionaryService.getDataType(QName.createQName(expandFieldName(field))).getName()); BooleanQuery query = new BooleanQuery(); for (QName qname : contentAttributes) { @@ -566,7 +571,7 @@ public class LuceneQueryParser extends QueryParser } else { - return super.getFieldQuery(field, queryText); + return getFieldQueryImpl(field, queryText); } } @@ -577,6 +582,542 @@ public class LuceneQueryParser extends QueryParser } + private Query getFieldQueryImpl(String field, String queryText) throws ParseException + { + // Use the analyzer to get all the tokens, and then build a TermQuery, + // PhraseQuery, or nothing based on the term count + + boolean isMlText = false; + String testText = queryText; + String localeString = null; + if (field.startsWith("@")) + { + String expandedFieldName = expandAttributeFieldName(field); + QName propertyQName = QName.createQName(expandedFieldName.substring(1)); + PropertyDefinition propertyDef = dictionaryService.getProperty(propertyQName); + if ((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.MLTEXT))) + { + int position = queryText.indexOf("\u0000", 1); + testText = queryText.substring(position + 1); + isMlText = true; + localeString = queryText.substring(1, position); + } + } + + TokenStream source = analyzer.tokenStream(field, new StringReader(queryText)); + ArrayList v = new ArrayList(); + org.apache.lucene.analysis.Token t; + int positionCount = 0; + boolean severalTokensAtSamePosition = false; + + while (true) + { + try + { + t = source.next(); + } + catch (IOException e) + { + t = null; + } + if (t == null) + break; + v.add(t); + if (t.getPositionIncrement() != 0) + positionCount += t.getPositionIncrement(); + else + severalTokensAtSamePosition = true; + } + try + { + source.close(); + } + catch (IOException e) + { + // ignore + } + + // add any alpha numeric wildcards that have been missed + // Fixes most stop word and wild card issues + + for (int index = 0; index < testText.length(); index++) + { + char current = testText.charAt(index); + if ((current == '*') || (current == '?')) + { + StringBuilder pre = new StringBuilder(10); + if (index > 0) + { + for (int i = index - 1; i >= 0; i--) + { + char c = testText.charAt(i); + if (Character.isLetterOrDigit(c)) + { + boolean found = false; + for (int j = 0; j < v.size(); j++) + { + org.apache.lucene.analysis.Token test = v.get(j); + if ((test.startOffset() <= i) && (i < test.endOffset())) + { + found = true; + break; + } + } + if (found) + { + break; + } + else + { + pre.insert(0, c); + } + } + } + if (pre.length() > 0) + { + // Add new token followed by * not given by the tokeniser + org.apache.lucene.analysis.Token newToken = new org.apache.lucene.analysis.Token(pre.toString(), index - pre.length(), index, "ALPHANUM"); + if (isMlText) + { + Locale locale = I18NUtil.parseLocale(localeString); + MLAnalysisMode analysisMode = searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters + .getMlAnalaysisMode(); + MLTokenDuplicator duplicator = new MLTokenDuplicator(locale, analysisMode); + Iterator it = duplicator.buildIterator(newToken); + if (it != null) + { + int count = 0; + while (it.hasNext()) + { + v.add(it.next()); + count++; + if(count > 1) + { + severalTokensAtSamePosition = true; + } + } + } + } + // content + else + { + v.add(newToken); + } + } + } + + StringBuilder post = new StringBuilder(10); + if (index > 0) + { + for (int i = index + 1; i < testText.length(); i++) + { + char c = testText.charAt(i); + if (Character.isLetterOrDigit(c)) + { + boolean found = false; + for (int j = 0; j < v.size(); j++) + { + org.apache.lucene.analysis.Token test = v.get(j); + if ((test.startOffset() <= i) && (i < test.endOffset())) + { + found = true; + break; + } + } + if (found) + { + break; + } + else + { + post.append(c); + } + } + } + if (post.length() > 0) + { + // Add new token followed by * not given by the tokeniser + org.apache.lucene.analysis.Token newToken = new org.apache.lucene.analysis.Token(post.toString(), index - post.length(), index, "ALPHANUM"); + if (isMlText) + { + Locale locale = I18NUtil.parseLocale(localeString); + MLAnalysisMode analysisMode = searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters + .getMlAnalaysisMode(); + MLTokenDuplicator duplicator = new MLTokenDuplicator(locale, analysisMode); + Iterator it = duplicator.buildIterator(newToken); + if (it != null) + { + int count = 0; + while (it.hasNext()) + { + v.add(it.next()); + count++; + if(count > 1) + { + severalTokensAtSamePosition = true; + } + } + } + } + // content + else + { + v.add(newToken); + } + } + } + + } + } + + Collections.sort(v, new Comparator() + { + + public int compare(Token o1, Token o2) + { + int dif = o1.startOffset() - o2.startOffset(); + if (dif != 0) + { + return dif; + } + else + { + return o2.getPositionIncrement() - o1.getPositionIncrement(); + } + } + }); + + // Combined * and ? based strings - should redo the tokeniser + + // Assue we only string together tokens for the same postion + + int max = 0; + int current = 0; + for (org.apache.lucene.analysis.Token c : v) + { + if (c.getPositionIncrement() == 0) + { + current++; + } + else + { + if (current > max) + { + max = current; + } + current = 0; + } + } + if (current > max) + { + max = current; + } + + ArrayList fixed = new ArrayList(); + for (int repeat = 0; repeat <= max; repeat++) + { + org.apache.lucene.analysis.Token replace = null; + current = 0; + for (org.apache.lucene.analysis.Token c : v) + { + if (c.getPositionIncrement() == 0) + { + current++; + } + else + { + current = 0; + } + + if (current == repeat) + { + + if (replace == null) + { + StringBuilder prefix = new StringBuilder(); + for (int i = c.startOffset() - 1; i >= 0; i--) + { + char test = testText.charAt(i); + if ((test == '*') || (test == '?')) + { + prefix.insert(0, test); + } + else + { + break; + } + } + String pre = prefix.toString(); + if (isMlText) + { + int position = c.termText().indexOf("}"); + String language = c.termText().substring(0, position + 1); + String token = c.termText().substring(position + 1); + replace = new org.apache.lucene.analysis.Token(language + pre + token, c.startOffset() - pre.length(), c.endOffset(), c.type()); + replace.setPositionIncrement(c.getPositionIncrement()); + } + else + { + replace = new org.apache.lucene.analysis.Token(pre + c.termText(), c.startOffset() - pre.length(), c.endOffset(), c.type()); + replace.setPositionIncrement(c.getPositionIncrement()); + } + } + else + { + StringBuilder prefix = new StringBuilder(); + StringBuilder postfix = new StringBuilder(); + StringBuilder builder = prefix; + for (int i = c.startOffset() - 1; i >= replace.endOffset(); i--) + { + char test = testText.charAt(i); + if ((test == '*') || (test == '?')) + { + builder.insert(0, test); + } + else + { + builder = postfix; + postfix.setLength(0); + } + } + String pre = prefix.toString(); + String post = postfix.toString(); + + // Does it bridge? + if ((pre.length() > 0) && (replace.endOffset() + pre.length()) == c.startOffset()) + { + if (isMlText) + { + int position = c.termText().indexOf("}"); + String language = c.termText().substring(0, position + 1); + String token = c.termText().substring(position + 1); + int oldPositionIncrement = replace.getPositionIncrement(); + replace = new org.apache.lucene.analysis.Token(replace.termText() + pre + token, replace.startOffset(), c.endOffset(), replace.type()); + replace.setPositionIncrement(oldPositionIncrement); + } + else + { + int oldPositionIncrement = replace.getPositionIncrement(); + replace = new org.apache.lucene.analysis.Token(replace.termText() + pre + c.termText(), replace.startOffset(), c.endOffset(), replace.type()); + replace.setPositionIncrement(oldPositionIncrement); + } + } + else + { + if (isMlText) + { + int position = c.termText().indexOf("}"); + String language = c.termText().substring(0, position + 1); + String token = c.termText().substring(position + 1); + org.apache.lucene.analysis.Token last = new org.apache.lucene.analysis.Token(replace.termText() + post, replace.startOffset(), replace.endOffset() + + post.length(), replace.type()); + last.setPositionIncrement(replace.getPositionIncrement()); + fixed.add(last); + replace = new org.apache.lucene.analysis.Token(language + pre + token, c.startOffset() - pre.length(), c.endOffset(), c.type()); + replace.setPositionIncrement(c.getPositionIncrement()); + } + else + { + org.apache.lucene.analysis.Token last = new org.apache.lucene.analysis.Token(replace.termText() + post, replace.startOffset(), replace.endOffset() + + post.length(), replace.type()); + last.setPositionIncrement(replace.getPositionIncrement()); + fixed.add(last); + replace = new org.apache.lucene.analysis.Token(pre + c.termText(), c.startOffset() - pre.length(), c.endOffset(), c.type()); + replace.setPositionIncrement(c.getPositionIncrement()); + } + } + } + } + } + // finish last + if (replace != null) + { + StringBuilder postfix = new StringBuilder(); + for (int i = replace.endOffset(); i < testText.length(); i++) + { + char test = testText.charAt(i); + if ((test == '*') || (test == '?')) + { + postfix.append(test); + } + else + { + break; + } + } + String post = postfix.toString(); + int oldPositionIncrement = replace.getPositionIncrement(); + replace = new org.apache.lucene.analysis.Token(replace.termText() + post, replace.startOffset(), replace.endOffset() + post.length(), replace.type()); + replace.setPositionIncrement(oldPositionIncrement); + fixed.add(replace); + + } + } + + // Add in any missing words containsing * and ? + + // reorder by start position and increment + + Collections.sort(fixed, new Comparator() + { + + public int compare(Token o1, Token o2) + { + int dif = o1.startOffset() - o2.startOffset(); + if (dif != 0) + { + return dif; + } + else + { + return o2.getPositionIncrement() - o1.getPositionIncrement(); + } + } + }); + + v = fixed; + + if (v.size() == 0) + return null; + else if (v.size() == 1) + { + t = (org.apache.lucene.analysis.Token) v.get(0); + if (t.termText().contains("*") || t.termText().contains("?")) + { + return new org.apache.lucene.search.WildcardQuery(new Term(field, t.termText())); + } + else + { + return new TermQuery(new Term(field, t.termText())); + } + } + else + { + if (severalTokensAtSamePosition) + { + if (positionCount == 1) + { + // no phrase query: + BooleanQuery q = new BooleanQuery(true); + for (int i = 0; i < v.size(); i++) + { + t = (org.apache.lucene.analysis.Token) v.get(i); + if (t.termText().contains("*") || t.termText().contains("?")) + { + org.apache.lucene.search.WildcardQuery currentQuery = new org.apache.lucene.search.WildcardQuery(new Term(field, t.termText())); + q.add(currentQuery, BooleanClause.Occur.SHOULD); + } + else + { + TermQuery currentQuery = new TermQuery(new Term(field, t.termText())); + q.add(currentQuery, BooleanClause.Occur.SHOULD); + } + } + return q; + } + else + { + // phrase query: + MultiPhraseQuery mpq = new MultiPhraseQuery(); + mpq.setSlop(phraseSlop); + ArrayList multiTerms = new ArrayList(); + for (int i = 0; i < v.size(); i++) + { + t = (org.apache.lucene.analysis.Token) v.get(i); + if (t.getPositionIncrement() == 1 && multiTerms.size() > 0) + { + mpq.add((Term[]) multiTerms.toArray(new Term[0])); + multiTerms.clear(); + } + Term term = new Term(field, t.termText()); + if ((t.termText() != null) && (t.termText().contains("*") || t.termText().contains("?"))) + { + addWildcardTerms(multiTerms, term); + } + else + { + multiTerms.add(term); + } + } + if (multiTerms.size() > 0) + { + mpq.add((Term[]) multiTerms.toArray(new Term[0])); + } + else + { + mpq.add(new Term[] { new Term(field, "\u0000") }); + } + return mpq; + } + } + else + { + MultiPhraseQuery q = new MultiPhraseQuery(); + q.setSlop(phraseSlop); + for (int i = 0; i < v.size(); i++) + { + t = (org.apache.lucene.analysis.Token) v.get(i); + Term term = new Term(field, t.termText()); + if ((t.termText() != null) && (t.termText().contains("*") || t.termText().contains("?"))) + { + q.add(getMatchingTerms(field, term)); + } + else + { + q.add(term); + } + } + return q; + } + } + } + + private Term[] getMatchingTerms(String field, Term term) throws ParseException + { + ArrayList terms = new ArrayList(); + addWildcardTerms(terms, term); + if (terms.size() == 0) + { + return new Term[] { new Term(field, "\u0000") }; + } + else + { + return terms.toArray(new Term[0]); + } + + } + + private void addWildcardTerms(ArrayList terms, Term term) throws ParseException + { + try + { + WildcardTermEnum wcte = new WildcardTermEnum(indexReader, term); + + while (!wcte.endEnum()) + { + Term current = wcte.term(); + if((current.text() != null) && (current.text().length() > 0) && (current.text().charAt(0) == '{')) + { + if((term != null) && (term.text().length() > 0) && (term.text().charAt(0) == '{')) + { + terms.add(current); + } + // If not, we cod not add so wildcards do not match the locale prefix + } + else + { + terms.add(current); + } + + wcte.next(); + } + } + catch (IOException e) + { + throw new ParseException("IO error generating phares wildcards " + e.getMessage()); + } + } + /** * @exception ParseException * throw in overridden method to disallow @@ -586,8 +1127,7 @@ public class LuceneQueryParser extends QueryParser if (field.startsWith("@")) { String fieldName = expandAttributeFieldName(field); - return new RangeQuery(new Term(fieldName, getToken(fieldName, part1)), new Term(fieldName, getToken( - fieldName, part2)), inclusive); + return new RangeQuery(new Term(fieldName, getToken(fieldName, part1)), new Term(fieldName, getToken(fieldName, part2)), inclusive); } else @@ -612,9 +1152,7 @@ public class LuceneQueryParser extends QueryParser else { // find the prefix - fieldName = "@{" - + namespacePrefixResolver.getNamespaceURI(field.substring(1, colonPosition)) + "}" - + field.substring(colonPosition + 1); + fieldName = "@{" + namespacePrefixResolver.getNamespaceURI(field.substring(1, colonPosition)) + "}" + field.substring(colonPosition + 1); } } return fieldName; @@ -635,9 +1173,7 @@ public class LuceneQueryParser extends QueryParser else { // find the prefix - fieldName = "{" - + namespacePrefixResolver.getNamespaceURI(field.substring(0, colonPosition)) + "}" - + field.substring(colonPosition + 1); + fieldName = "{" + namespacePrefixResolver.getNamespaceURI(field.substring(0, colonPosition)) + "}" + field.substring(colonPosition + 1); } } return fieldName; @@ -780,7 +1316,7 @@ public class LuceneQueryParser extends QueryParser public Query getSuperFieldQuery(String field, String queryText) throws ParseException { - return super.getFieldQuery(field, queryText); + return getFieldQueryImpl(field, queryText); } public Query getSuperFuzzyQuery(String field, String termStr, float minSimilarity) throws ParseException @@ -892,11 +1428,10 @@ public class LuceneQueryParser extends QueryParser // cross language matching for each entry BooleanQuery booleanQuery = new BooleanQuery(); List locales = searchParameters.getLocales(); - for (Locale locale : (((locales == null) || (locales.size() == 0)) ? Collections.singletonList(I18NUtil - .getLocale()) : locales)) + for (Locale locale : (((locales == null) || (locales.size() == 0)) ? Collections.singletonList(I18NUtil.getLocale()) : locales)) { - - if(isAnalysed) + + if (isAnalysed) { StringBuilder builder = new StringBuilder(queryText.length() + 10); builder.append("\u0000").append(locale.toString()).append("\u0000").append(queryText); @@ -913,15 +1448,14 @@ public class LuceneQueryParser extends QueryParser else { // analyse ml text - MLAnalysisMode analysisMode = searchParameters.getMlAnalaysisMode() == null ? config - .getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode(); + MLAnalysisMode analysisMode = searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode(); // Do the analysis here - VerbatimAnalyser vba = new VerbatimAnalyser(false); + VerbatimAnalyser vba = new VerbatimAnalyser(false); MLTokenDuplicator duplicator = new MLTokenDuplicator(vba.tokenStream(field, new StringReader(queryText)), locale, null, analysisMode); Token t; try { - while( (t = duplicator.next()) != null) + while ((t = duplicator.next()) != null) { Query subQuery = subQueryBuilder.getQuery(expandedFieldName, t.termText()); booleanQuery.add(subQuery, Occur.SHOULD); @@ -929,15 +1463,15 @@ public class LuceneQueryParser extends QueryParser } catch (IOException e) { - + } - if(booleanQuery.getClauses().length == 0) + if (booleanQuery.getClauses().length == 0) { booleanQuery.add(new TermQuery(new Term("NO_TOKENS", "__")), Occur.SHOULD); } - + } - + } return booleanQuery; } @@ -947,8 +1481,7 @@ public class LuceneQueryParser extends QueryParser // Build a sub query for each locale and or the results together - // - add an explicit condition for the locale - MLAnalysisMode analysisMode = searchParameters.getMlAnalaysisMode() == null ? config - .getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode(); + MLAnalysisMode analysisMode = searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode(); if (analysisMode.includesAll()) { @@ -957,8 +1490,7 @@ public class LuceneQueryParser extends QueryParser List locales = searchParameters.getLocales(); List expandedLocales = new ArrayList(); - for (Locale locale : (((locales == null) || (locales.size() == 0)) ? Collections.singletonList(I18NUtil - .getLocale()) : locales)) + for (Locale locale : (((locales == null) || (locales.size() == 0)) ? Collections.singletonList(I18NUtil.getLocale()) : locales)) { expandedLocales.addAll(MLAnalysisMode.getLocales(analysisMode, locale, true)); } @@ -1008,7 +1540,7 @@ public class LuceneQueryParser extends QueryParser else { Query query = subQueryBuilder.getQuery(expandedFieldName, queryText); - if(query != null) + if (query != null) { return query; } @@ -1022,7 +1554,7 @@ public class LuceneQueryParser extends QueryParser else { Query query = subQueryBuilder.getQuery(expandedFieldName, queryText); - if(query != null) + if (query != null) { return query; } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/AlfrescoStandardAnalyser.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/AlfrescoStandardAnalyser.java index e9641e702d..6aa22b4de9 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/AlfrescoStandardAnalyser.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/AlfrescoStandardAnalyser.java @@ -57,7 +57,7 @@ public class AlfrescoStandardAnalyser extends Analyzer { stopSet = StopFilter.makeStopSet(stopWords); } - + /** * Constructs a {@link StandardTokenizer} filtered by a {@link StandardFilter}, a {@link LowerCaseFilter} and a {@link StopFilter}. */ diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/MLTokenDuplicator.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/MLTokenDuplicator.java index 996ce7c1fd..21d4ade4f2 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/MLTokenDuplicator.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/MLTokenDuplicator.java @@ -61,6 +61,11 @@ public class MLTokenDuplicator extends Tokenizer } } + + public MLTokenDuplicator(Locale locale, MLAnalysisMode mlAnalaysisMode) + { + this(null, locale, null, mlAnalaysisMode); + } @Override public Token next() throws IOException @@ -87,6 +92,13 @@ public class MLTokenDuplicator extends Tokenizer private Iterator buildIterator() throws IOException { Token token = source.next(); + return buildIterator(token); + + } + + + public Iterator buildIterator(Token token) + { if (token == null) { return null; @@ -110,4 +122,5 @@ public class MLTokenDuplicator extends Tokenizer } + } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/analysis/NumericEncoder.java b/source/java/org/alfresco/repo/search/impl/lucene/analysis/NumericEncoder.java index 7b248812af..8936e1a693 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/analysis/NumericEncoder.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/analysis/NumericEncoder.java @@ -122,6 +122,12 @@ public class NumericEncoder return decodeFromHex(hex) ^ LONG_SIGN_MASK; } + + public static int decodeInt(String hex) + { + return decodeIntFromHex(hex) ^ INTEGER_SIGN_MASK; + } + /** * Encode a float into a string that orders correctly according to string * comparison. Note that there is no negative NaN but there are codings that @@ -208,6 +214,19 @@ public class NumericEncoder return l; } + private static int decodeIntFromHex(String hex) + { + int l = 0; + int factor = 1; + for(int i = 7; i >= 0; i--, factor <<= 4) + { + int digit = Character.digit(hex.charAt(i), 16); + l += digit*factor; + } + return l; + } + + private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };