从 jackrabbit 中找到 xml 个具有指定标签名称的文件

Find xml files from jackrabbit with specified tag name

我正在使用 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 索引中,所以它 returns 什么都没有,我怎样才能使它与 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 标签名称默认不被索引。所以你需要自己处理。 Jackkrabbit 使用 Apache Tika 进行文本提取。因此,您可以通过实现自己的扩展 org.apache.tika.parser.Parser

的 xml 解析器轻松提取所需信息

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