【发布时间】: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