Как связать отсканированный документ с помощью текстового контента, чтобы сделать его доступным для поиска?
Вопрос
У меня есть PDF -документы, содержащие несколько изображений/страниц отсканированных документов. Их (OCR-производный) текстовый содержимое поставляется в отдельных файлах XML.
Можно ли использовать/связать текстовый содержимое от XML как -то с моими файлами PDF? (В идеале в репозитории не останется никаких дополнительных файлов, чтобы запутать неосведомленных пользователей.)
Как мне сказали, что на текстовом свойстве есть ограничение в 65 тыс., Поэтому я не могу просто поместить текстовое содержание в свойство на, поскольку PDF может легко превышать этот предел.
Было предложено передать поток с текстовым контентом в CM: свойство контента моего PDF -файла. Я как бы потерял здесь, так как IMO это означает, что либо я предоставляю ссылку, либо снова назначаю огромную строку. Первый будет означать, что текстовое содержание должно быть сохранено где -то в качестве отдельного документа. Позднее звучит так, как будто я снова нажал предел 65 тыс.
Также я думаю, что настройка CM: Контент, вероятно, удалит сам контент PDF. Мне нужны двоичные данные PDF, чтобы оставаться нетронутыми.
Вот где Предложение обсуждается. Отказ Я в настоящее время пробую это в любом случае.
Решение 2
Еще один способ достичь того, что мне нужно, - это установить my_text_content_property с использованием contentservice ...
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
(Похоже, важным является то, чтобы положить контент после Миметип и кодирование установлены. В противном случае контент/свойство не доступно для поиска.)
С таким подходом нет необходимости скрывать связанные текстовые документы, их нет.
Другие советы
Су, это на самом деле довольно просто ... что нужно сделать, так это определить свойство типа «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 + "\""
Позднее также намекают здесь, и я думаю, что именно так работает регулярный поиск в веб -клиенте Alfresco, потому что теперь PDF доступен с помощью обычного ввода поиска.
Есть одна проблема: поиск плюет документ PDF, а также документ, который я ссылаюсь, используя свойство. Итак, теперь мне нужно спрятать позже от результатов поиска ...
(При поиске с использованием первого запроса находится только PDF, как и ожидалось; но этот подход мало используется для меня.)
Надеемся, что это экономит некоторое время на другие Alfresco-Newbies. :)