スキャンされたドキュメントをテキストコンテンツとリンクして検索可能にする方法は?
質問
スキャンされたドキュメントの画像/ページをいくつか含むPDFドキュメントがあります。それら(OCRが作成した)テキストコンテンツには、個別のXMLファイルがあります。
XMLのテキストコンテンツを何らかの形でPDFファイルに使用/リンクすることは可能ですか? (理想的には、リポジトリに追加のファイルが残っていないため、ユーザーが認識していないユーザーを混乱させることはありません。)
テキストプロパティに65K制限があると言われたように、PDFがその制限を簡単に超える可能性があるため、テキストコンテンツを単にプロパティに配置することはできません。
テキストコンテンツをCM:コンテンツプロパティのPDFファイルに渡すストリームを渡すことを提案しました。私はここでちょっと迷子になります。それは、私が参照を提供しているか、再び巨大な文字列を割り当てていることを意味するIMOからです。 1つ目は、テキストコンテンツを別のドキュメントとしてどこかに保存する必要があることを意味します。後では、私が再び65kの制限を打つように聞こえます。
また、CM:コンテンツの設定は、おそらくPDFコンテンツ自体を削除すると思います。手つかずのままにするには、PDFバイナリデータが必要です。
これがどこにありますか 提案が議論されています. 。とにかくそれを試しています。
解決 2
必要なものを達成する別の方法は、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とエンコードが設定されています。それ以外の場合、コンテンツ/プロパティは検索できません。)
このアプローチでは、リンクされたテキストドキュメントを非表示にする必要はありません。何もありません。
他のヒント
SOO、それは実際には非常に簡単です...行う必要があるのは、ドキュメントに「D:コンテンツ」タイプのプロパティを定義することです。私はアスペクトでそれをします...
model.xml:
<aspects>
<aspect name="mm:my_aspect">
...
<property name="mm:myTextContentProperty">
<type>d:content</type>
</property>
</properties>
</aspect>
</aspects>
次に、リポジトリにPDFとそのテキスト表現の両方を持っている場合、アスペクトを追加してプロパティに入力することにより、これら2つをリンクします...
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 Webクライアントの定期的な検索の仕組みだと思います。これは、PDFに通常の検索入力を使用して到達可能になっているためです。
ただし、1つの問題があります。検索では、PDFドキュメントとプロパティを使用してリンクするドキュメントも吐き出します。だから今、私は後で検索結果から隠す必要があります...
(最初のクエリを使用して検索すると、PDFのみが見つかります。予想通り、そのアプローチは私にとってはほとんど役に立ちません。)
うまくいけば、他のAlfresco-Newbiesに時間を節約できます。 :)