Pdf等の検索について


#1

はじめまして。

Elasticsearchの使用に関して検討を始めたばかりの初心者です。

Elasticsearchを使用して、PDF等の資料の検索等を検討しております。

ManifoldCF等のクローラーを使用して、PDF等のファイルをElasticsearchへ蓄積はできるのですが、
手作業で、Elasticsearchへ蓄積する場合、Base64で変換し、その後変換したファイルをElasticsearchへ蓄積する方法しかないのでしょうか?
PDF等をそのまま指定して、Elasticsearchへ蓄積する方法等は無いのでしょうか?

ご教授をお願いします


#2

おせわになります。

PDFファイル等の「Elasticsearch」への蓄積に関する質問に関しては、仕様に関する勘違いもあり自己解決できました。

ただ、Senceから蓄積されたデータを検索した場合に、思ったような検索結果が得られません。
(一部の文言は検索できるようです。)

下記がSenceへの入力になります。

GET _search
{
"fields" : ["uri", "file._name", "file._content_type", "file._content"],
"query" : {
"query_string": {
"query": "LIST"
}
}
}

Indexの定義や、Setting等なにか設定が必要なのでしょうか?

質問ばかりで、申し訳ございません。
ご教授をお願いします。


(Jun Ohtani) #3

すみません、どんなデータを入れて、検索できないものと検索できないものがどんなものかを書いていただけますでしょうか?


#5

お世話になります。

登録しているデータファイルは、WORDから作成したPDFファイルで、内部技術資料となっております。

ほとんどのドキュメントで使用されている、”TABLE”や”LIST”といった文字列では、検索結果が0件となります。
(PDFをAcrobat Reader等で表示し、検索すると文言は含まれております。)
また、”AI”や”AII”等の文字列では、それなりに検索できているのではと思いますが、”AII”と”I”を一文字追加すると、検索結果が、希望結果と異なってきます。

・追加情報
登録しているPDFファイルは、すべて電子署名されたPDFファイルとなります。そのため、暗号化されていると思われます。

以上、ご教授をお願いします。


(Jun Ohtani) #6

暗号化されているというのはパスワード付きということでしょうか?
パスワードが付いているファイルは読み込めないと思いますが。。。

こちらの設定を行うと、エラーが出ているかがわかると思います。
https://www.elastic.co/guide/en/elasticsearch/plugins/master/mapper-attachments-error-handling.html


#7

お世話になります。

PDFには、パスワードは設定されておりません。
電子署名されているだけになります。

また、「Metadata parsing error handling」の設定を下記の様に実行してみたのですが、エラーとなります。
indexは「doc_search」です。

curl -XPUT http://XX.XX.XX.XX:9200/doc_search?pretty -d '{ "index.mapping.attachment.ignore_errors": false }'
{
"error" : {
"root_cause" : [ {
"type" : "index_already_exists_exception",
"reason" : "already exists",
"index" : "doc_search"
} ],
"type" : "index_already_exists_exception",
"reason" : "already exists",
"index" : "doc_search"
},
"status" : 400
}


(Jun Ohtani) #8

残念ながら、"index.mapping.attachment.ignore_errors"はインデックス生成時にのみ設定できる項目なので、別途インデックスを作成して試してみてください。


#9

おせわになります。

インデックスを再度生成し、"index.mapping.attachment.ignore_errors"を設定しました。
インデックスの情報を確認しても、”"index.mapping.attachment.ignore_errors"”がFALSEに設定されている事を確認しました。

PDFの登録時になどに、「/var/log/elasticsearch/elasticsearch.log」にエラーは出力されませんでした。

ついでに、
"file" : {
"properties" : {
"_content" : {
"type" : "attachment",
で、”attachment”が定義されている事も再度確認しました。

その他、なにか確認すべき内容等ありますでしょうか?


(Jun Ohtani) #10

実際にデータがうまく抜き出せているかどうかをStandaloneRunnerで確認したり、
https://www.elastic.co/guide/en/elasticsearch/plugins/2.3/mapper-attachments-standalone.html

文字の制限に引っかかってないかを確認してはどうでしょうか?
https://www.elastic.co/guide/en/elasticsearch/plugins/2.3/mapper-attachments-indexed-characters.html

あとは、Mappingがどうなっているかによって検索がうまく動いているかどうかを確認したりが良いかと。
それぞれのフィールドの定義がどうなっているか、どんな検索クエリを投げているかなど。
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-validate.html


#11

おせわになります。

無事に、PDFファイルの検索を行うことができました。

問題の個所は、インデックスを作成する際にPDFのデータを格納するフィールドのタイプを”attachment”にして作成していたつもりが、定義がずれていたようで、実際にデータが格納されていたフィールドタイプが”String”となっておりました。
そのため、検索できなかったようです。

ご教授、ありがとうございました。


(system) #12