【问题标题】:Find xml files from jackrabbit with specified tag name从 jackrabbit 中查找具有指定标签名称的 xml 文件
【发布时间】:2015-05-06 15:24:46
【问题描述】:

我正在使用jackrabbit存储一些xml文件,代码如下

public Node saveFile(Node folder, String nodeName, InputStream inputStream, String mimeType, String encoding) throws RepositoryException {
    Node fileNode = folder.addNode(nodeName, JcrConstants.NT_FILE);
    Node resourceNode = fileNode.addNode(JcrConstants.JCR_CONTENT, JcrConstants.NT_RESOURCE);

    resourceNode.setProperty(JcrConstants.JCR_MIMETYPE, mimeType);
    resourceNode.setProperty(JcrConstants.JCR_ENCODING, encoding);
    resourceNode.setProperty(JcrConstants.JCR_DATA, createBinary(folder.getSession(), inputStream));

    return fileNode;
}

private Binary createBinary(Session session, InputStream inputStream) throws RepositoryException {
        return session.getValueFactory().createBinary(new BufferedInputStream(inputStream));
    }

mimeType 设置为 text/xml,我使用的是全文搜索功能,当我尝试按某些内容作为关键字搜索文件时,它工作正常,但现在我想搜索通过 xml 标签名称文件,目前似乎标签名称不在 lucene 索引中,所以它什么都不返回,我怎么能用 jackrabbit 做这个工作?我的 SearchIndex 配置如下:

 <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
        <param name="path" value="${wsp.home}/index"/>
        <param name="useCompoundFile" value="true"/>
        <param name="minMergeDocs" value="100"/>
        <param name="volatileIdleTime" value="3"/>
        <param name="maxMergeDocs" value="100000"/>
        <param name="mergeFactor" value="10"/>
        <param name="maxFieldLength" value="10000"/>
        <param name="bufferSize" value="10"/>
        <param name="cacheSize" value="1000"/>
        <param name="forceConsistencyCheck" value="false"/>
        <param name="autoRepair" value="true"/>
        <param name="analyzer" value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
        <param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl"/>
        <param name="respectDocumentOrder" value="true"/>
        <param name="resultFetchSize" value="2147483647"/>
        <param name="extractorPoolSize" value="5"/>
        <param name="extractorTimeout" value="5000"/>
        <param name="extractorBackLogSize" value="100"/>
    </SearchIndex>

感谢您的帮助:-)

【问题讨论】:

    标签: xml lucene full-text-search jackrabbit


    【解决方案1】:

    默认情况下,XML 标记名称不编入索引。所以你需要自己处理。 Jackkrabbit 使用 Apache Tika 进行文本提取。因此,您可以通过实现自己的扩展 org.apache.tika.parser.Parser 的 xml 解析器轻松提取所需信息

    【讨论】:

      【解决方案2】:

      xml标签默认不被索引,需要自己提取xml标签名并根据自己的需求进行索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        • 2020-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-01
        • 1970-01-01
        相关资源
        最近更新 更多