Search in sources :

Example 1 with HierarchyManagerImpl

use of org.apache.jackrabbit.core.HierarchyManagerImpl in project jackrabbit by apache.

the class LuceneQueryBuilder method createQuery.

/**
     * Creates a lucene {@link org.apache.lucene.search.Query} tree from an
     * abstract query tree.
     *
     * @param root            the root node of the abstract query tree.
     * @param session         of the user executing the query.
     * @param sharedItemMgr   the shared item state manager of the workspace.
     * @param nsMappings      namespace resolver for internal prefixes.
     * @param analyzer        for parsing the query statement of the contains
     *                        function.
     * @param propReg         the property type registry to lookup type
     *                        information.
     * @param synonymProvider the synonym provider or <code>null</code> if node
     *                        is configured.
     * @param  indexFormatVersion  the index format version to be used
     * @return the lucene query tree.
     * @throws RepositoryException if an error occurs during the translation.
     */
public static Query createQuery(QueryRootNode root, SessionImpl session, ItemStateManager sharedItemMgr, NamespaceMappings nsMappings, Analyzer analyzer, PropertyTypeRegistry propReg, SynonymProvider synonymProvider, IndexFormatVersion indexFormatVersion, PerQueryCache cache) throws RepositoryException {
    HierarchyManager hmgr = new HierarchyManagerImpl(RepositoryImpl.ROOT_NODE_ID, sharedItemMgr);
    LuceneQueryBuilder builder = new LuceneQueryBuilder(root, session, sharedItemMgr, hmgr, nsMappings, analyzer, propReg, synonymProvider, indexFormatVersion, cache);
    Query q = builder.createLuceneQuery();
    if (builder.exceptions.size() > 0) {
        StringBuffer msg = new StringBuffer();
        for (Exception exception : builder.exceptions) {
            msg.append(exception.toString()).append('\n');
        }
        throw new RepositoryException("Exception building query: " + msg.toString());
    }
    return q;
}
Also used : HierarchyManager(org.apache.jackrabbit.core.HierarchyManager) RepositoryException(javax.jcr.RepositoryException) HierarchyManagerImpl(org.apache.jackrabbit.core.HierarchyManagerImpl) NameException(org.apache.jackrabbit.spi.commons.conversion.NameException) ParseException(org.apache.lucene.queryParser.ParseException) RepositoryException(javax.jcr.RepositoryException) NamespaceException(javax.jcr.NamespaceException) InvalidQueryException(javax.jcr.query.InvalidQueryException)

Example 2 with HierarchyManagerImpl

use of org.apache.jackrabbit.core.HierarchyManagerImpl in project jackrabbit by apache.

the class IndexingConfigurationImpl method init.

/**
     * {@inheritDoc}
     */
public void init(Element config, QueryHandlerContext context, NamespaceMappings nsMappings) throws Exception {
    configuration = config;
    ism = context.getItemStateManager();
    hmgr = new HierarchyManagerImpl(context.getRootId(), ism);
    NamespaceResolver nsResolver = new AdditionalNamespaceResolver(getNamespaces(config));
    resolver = new ParsingNameResolver(NameFactoryImpl.getInstance(), nsResolver);
    ntReg = context.getNodeTypeRegistry();
    ntReg.addListener(this);
    refreshIndexRules();
    List<AggregateRule> idxAggregates = new ArrayList<AggregateRule>();
    NodeList indexingConfigs = config.getChildNodes();
    for (int i = 0; i < indexingConfigs.getLength(); i++) {
        Node configNode = indexingConfigs.item(i);
        if (configNode.getNodeName().equals("aggregate")) {
            idxAggregates.add(new AggregateRuleImpl(configNode, resolver, ism, hmgr));
        } else if (configNode.getNodeName().equals("analyzers")) {
            NodeList childNodes = configNode.getChildNodes();
            for (int j = 0; j < childNodes.getLength(); j++) {
                Node analyzerNode = childNodes.item(j);
                if (analyzerNode.getNodeName().equals("analyzer")) {
                    Analyzer analyzer = JackrabbitAnalyzer.getAnalyzerInstance(analyzerNode.getAttributes().getNamedItem("class").getNodeValue());
                    NodeList propertyChildNodes = analyzerNode.getChildNodes();
                    for (int k = 0; k < propertyChildNodes.getLength(); k++) {
                        Node propertyNode = propertyChildNodes.item(k);
                        if (propertyNode.getNodeName().equals("property")) {
                            // get property name
                            Name propName = resolver.getQName(getTextContent(propertyNode));
                            String fieldName = nsMappings.translateName(propName);
                            // set analyzer for the fulltext property fieldname
                            int idx = fieldName.indexOf(':');
                            fieldName = fieldName.substring(0, idx + 1) + FieldNames.FULLTEXT_PREFIX + fieldName.substring(idx + 1);
                            Object prevAnalyzer = analyzers.put(fieldName, analyzer);
                            if (prevAnalyzer != null) {
                                log.warn("Property " + propName.getLocalName() + " has been configured for multiple analyzers. " + " Last configured analyzer is used");
                            }
                        }
                    }
                }
            }
        }
    }
    if (idxAggregates.isEmpty()) {
        aggregateRules = null;
    } else {
        aggregateRules = idxAggregates.toArray(new AggregateRule[idxAggregates.size()]);
    }
}
Also used : ParsingNameResolver(org.apache.jackrabbit.spi.commons.conversion.ParsingNameResolver) AdditionalNamespaceResolver(org.apache.jackrabbit.core.nodetype.xml.AdditionalNamespaceResolver) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) Analyzer(org.apache.lucene.analysis.Analyzer) Name(org.apache.jackrabbit.spi.Name) NamespaceResolver(org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver) AdditionalNamespaceResolver(org.apache.jackrabbit.core.nodetype.xml.AdditionalNamespaceResolver) HierarchyManagerImpl(org.apache.jackrabbit.core.HierarchyManagerImpl)

Aggregations

HierarchyManagerImpl (org.apache.jackrabbit.core.HierarchyManagerImpl)2 ArrayList (java.util.ArrayList)1 NamespaceException (javax.jcr.NamespaceException)1 RepositoryException (javax.jcr.RepositoryException)1 InvalidQueryException (javax.jcr.query.InvalidQueryException)1 HierarchyManager (org.apache.jackrabbit.core.HierarchyManager)1 AdditionalNamespaceResolver (org.apache.jackrabbit.core.nodetype.xml.AdditionalNamespaceResolver)1 Name (org.apache.jackrabbit.spi.Name)1 NameException (org.apache.jackrabbit.spi.commons.conversion.NameException)1 ParsingNameResolver (org.apache.jackrabbit.spi.commons.conversion.ParsingNameResolver)1 NamespaceResolver (org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver)1 Analyzer (org.apache.lucene.analysis.Analyzer)1 ParseException (org.apache.lucene.queryParser.ParseException)1 Node (org.w3c.dom.Node)1 NodeList (org.w3c.dom.NodeList)1