jackrabbit1.4对纯文本(text/plain )的全文检索支持
采用JCR(JSR170)内容数据库实现API jackrabbit 开发SmartNote程序的时候,发现了一个怪异的现象。
jackrabbit 全文检索对Word、PDF、Html等格式的文件有很好的支持,但是无法对纯文本(text/plain)进行检索。
这种现象让人感觉到很奇怪,如果把文本文件存放在proptery中,可以被检索到,存放在nt:file就没法检索到了。
检查默认产生的workspace.xml文件,可以看到如下信息
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
<param name="textFilterClasses" value="org.apache.jackrabbit.extractor.MsWordTextExtractor,org.apache.jackrabbit.extractor.MsExcelTextExtractor,org.apache.jackrabbit.extractor.MsPowerPointTextExtractor,org.apache.jackrabbit.extractor.PdfTextExtractor,org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,org.apache.jackrabbit.extractor.RTFTextExtractor,org.apache.jackrabbit.extractor.HTMLTextExtractor,org.apache.jackrabbit.extractor.XMLTextExtractor"/>
<param name="extractorPoolSize " value="2"/>
<param name="supportHighlighting" value="true"/>
</SearchIndex>
可以在textFilterClasses中看见对msword、msexcel、ppt、pdf等文件的分词解析。
独缺对text文档解析,只需在其中加上org.apache.jackrabbit.extractor.DefaultTextExtractor就可以解析text文件了
另外需要设置编码,否则也无法检索到纯文本内容,如下是代码片段
Node note = root.addNode("note");
Node filenode = note.addNode("file", "nt:file");
Node resnode = filenode.addNode("jcr:content", "nt:resource");
resnode.setProperty("jcr:mimeType", “text/plain”);
resnode.setProperty("jcr:encoding", "utf-8");