如何将扫描的文档与其文本内容链接以使其可搜索?

时间:2010-10-12 08:44:59

标签: java alfresco

我有PDF文档,其中包含多个扫描文档的图像/页面。它们(OCR生成的)文本内容包含在单独的XML文件中。

是否可以以某种方式将XML中的文本内容用于我的PDF文件? (理想情况下,存储库中不会留下任何其他文件来混淆不知情的用户。)

由于我被告知文本属性有65k的限制,因此我不能简单地将文本内容放入其中的属性,因为PDF可能很容易超过该限制。

建议将包含文本内容的流传递到我的PDF文件的cm:content属性。我有点迷失在这里,因为IMO意味着我要么提供参考,要么我再次分配大字符串。第一个意味着文本内容必须作为单独的文档保存在某处。后来听起来像是我再次达到65k的限制 另外我认为设置cm:content可能会删除PDF内容本身。我需要PDF二进制数据保持不变。

这是suggestion is being discussed的地方。我现在正在努力尝试。

2 个答案:

答案 0 :(得分:1)

Soo,实际上非常简单......需要做的是在文档中定义“d:content”类型的属性;我是通过一个方面做到的......

model.xml:

<aspects>
    <aspect name="mm:my_aspect">
...
            <property name="mm:myTextContentProperty">
                <type>d:content</type>
            </property>
        </properties>
    </aspect>
</aspects>

然后,当我在存储库中同时拥有PDF及其文本表示时,我通过添加方面并填充属性来链接这两个...

getNodeService().addAspect(pdfNodeRef, myAspect, null);
getNodeService().setProperty(pdfNodeRef, MyModel.MY_TEXT_CONTENT_PROPERTY, new ContentData("store://....bin", "text/plain", size, "UTF-8"));

现在可以通过以下查询找到PDF,即使它不包含任何文本数据......

"@\\{http\\://mymodel.ns/content/1.0\\}myTextContentProperty:\"" + string + "\""
"TEXT:\"" + string + "\""

后者也暗示here,我猜这就是Alfresco Web Client中常规搜索的工作原理,因为现在可以使用常规搜索输入访问PDF了。
但有一个问题:搜索会发送PDF文档以及使用该属性链接的文档。所以现在我需要隐藏搜索结果中的后期内容......

(当使用第一个查询进行搜索时,只能按预期找到PDF;但这种方法对我来说没用。)

希望它能为其他Alfresco新手节省一些时间。 :)

答案 1 :(得分:0)

实现我需要的另一种方法是使用contentService设置MY_TEXT_CONTENT_PROPERTY ......

ContentWriter writer = getContentService().getWriter(pdfNodeRef, MyModel.MY_TEXT_CONTENT_PROPERTY, true);
writer.setMimetype("text/plain");
writer.setEncoding("UTF-8");
writer.putContent(stringFromXmlDescription); // the source XML gets thrown away

(重要的是将内容放在之后设置mimetype和编码。否则内容/属性不可搜索。)

使用这种方法,不需要隐藏链接的文本文档,没有任何。