ユーザーがワード文書をシステムに保存するオプションを持つ内部アプリケーションを構築していますが、問題は、ユーザーがこれらの文書をキーワードで検索できるようにする必要があることです。これらのドキュメントを Varchar フィールドに保存し、これらのフィールドでキーワードを検索するか、Solr/Lucene を使用して全文検索を使用する必要があるか疑問に思っていました。
これがこの目的にとって効率的な設計であるかどうかを知りたいです。
前もって感謝します !
ユーザーがワード文書をシステムに保存するオプションを持つ内部アプリケーションを構築していますが、問題は、ユーザーがこれらの文書をキーワードで検索できるようにする必要があることです。これらのドキュメントを Varchar フィールドに保存し、これらのフィールドでキーワードを検索するか、Solr/Lucene を使用して全文検索を使用する必要があるか疑問に思っていました。
これがこの目的にとって効率的な設計であるかどうかを知りたいです。
前もって感謝します !
Word ドキュメントをデータベースに保存する必要があり、いくつかの古典的なキーワードで検索できるようにしたい場合は、仮想パス プロバイダーを使用します。ドキュメントが保存されるたびに、いくつかのキーワードを dB フィールドに入力し、それらのキーワードを使用して検索します。このメソッドは、John3136 が言及した DB コピーを回避します。
ドキュメントのコンテンツを検索できるようにする必要がある場合、ファイルが BLOB として保存されている場合は検索できません。そのため、この目的のためには、ドキュメントを XML Word 2003 として保存し、フル ファイルを構成する方が理にかなっています。山かっこを無視するテキスト検索。例:
Regex.Replace(dBFieldOfWordXMLData, @"<[^>]*>", string.Empty);
最も効率的な方法は仮想パス プロバイダーを使用することだと思います。MSDN の記事と SharePoint ドキュメントは仮想パス プロバイダーを使用し、検索可能です。私は、Azure 上の EpiServer CMS で最も効率的なソリューションが何であるかについていくつかの調査を行いました: http://episerverazurevpp.codeplex.com/
詳細がなければ、これは賢明に答えることができません。考慮すべき点がいくつかあります。
ドキュメント全体を DB の varchar フィールドに保存すると言っていますか? それは本当に賢明に聞こえません-DBコピーをディスクコピーと同期させるという全体的な問題があります(そもそもDBコピーの全体的なアイデアは言うまでもありません...)
キーワードについて言及する: キーワードの数が限られている場合、単語ドキュメントからキーワードを検索する Office 相互運用アプリを作成するのはかなり簡単です。保存時にこれを実行して、どのドキュメントにどの単語が含まれているかのDBを保持するか、「オンザフライ」で実行できます(つまり、ドキュメントでいっぱいのフォルダー全体から特定の単語を含むドキュメントを検索するアプリ)-それすべては、ドキュメントの数、必要なパフォーマンスなどによって異なります。
ドキュメントのプロパティを使って (キーワードに対応する独自のカスタム プロパティを追加して)、そのプロパティでファイルを検索できますか?