Upload Data with Solr Cell using Apache Tika

บน Solr จะใช้ Apache Tika เป็นตัวจัดการ File Format ต่าง ๆ เช่น Apache PDFBox และ Apache POI ทำให้สามารถทำการอัพโหลด Binary File รวมถึงไฟล์พวก Word, PDF เพื่อทำ Data Extraction และ Indexing จึงถูกเรียกว่า Solr Content Extraction Library ( Solr Cell )


Solr Cell

การทำงานของ Solr Cell Framework เมื่อเราทำการอัพโหลด Document จะถูก Tika ทำการกำนหด Document Type ให้โดยอัตโนมัติ ( Word, PDF, HTML ) พร้อมทำการ Extract Content เพื่อจัดทำ Index หลังจากนั้น Tika จะทำการนำ Extract Content ทั้งหมดไปใส่ใน Content Field ซึ่งเราสามารถทำการ Map ระหว่าง Tika Metadata Field กับ Solr Field

Get Started

  • ทำการอัพโหลดไฟล์ผ่าน HTTP POST
# curl 'http://localhost:8983/solr/techproducts/update/extract?literal.id=doc1&commit=true' -F "myfile=@example/exampledocs/solr-word.pdf"

อธิบาย Parameter

  • literal.id=doc1 : เป็นการกำหนด ID ของ Document จะต้องไม่ซ้ำกัน
  • commit=true : เป็นการบอกว่า ถ้าทำ Index เสร็จเรียบร้อยแล้ว ให้ทำการ Commit เพื่อให้สามารถทำการค้นหาได้ทันที
  • -F : เป็นการสั่งให้ส่งข้อมูลแบบ POST ผ่านทาง multipart/form-data และสนับสนุนการอัพโหลด Binary File
  • myfile=@tutorial.html : เป็นการสั่งให้อัพโหลดไฟล์ที่แนบมาไปเก็บไว้ที่ไหน
  • ทำการอัพโหลดไฟล์ผ่าน bin/post
# ./bin/post -c techproducts example/exampledocs/solr-word.pdf -params "literal.id=a"
java -classpath /opt/bitnami/apache-solr/dist/solr-core-7.5.0.jar -Dauto=yes -Dparams=literal.id=a -Dc=techproducts -Ddata=files org.apache.solr.util.SimplePostTool example/exampledocs/solr-word.pdf
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/techproducts/update?literal.id=a...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file solr-word.pdf (application/pdf) to [base]/extract
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/techproducts/update?literal.id=a...
Time spent: 0:00:03.097
  • หากเป็นบน Windows จะใช้ Java
# java -jar -Dc=techproducts -Dauto ../example/exampledocs/post.jar ../example/exampledocs/solr-word.pdf -params "literal.id=a"
  • ลองทำการ Query Data โดยระบุคำค้นหาเป็น pdf
  • ทำการอัพโหลดไฟล์ใหม่ เพื่อให้จัดเก็บ Metadata ทั้งหมด เนื่องจาก Field ที่ไม่รู้จักจะถูกละเว้นไว้ตามพารามิเตอร์ /update/extract ในไฟล์ solrconfig.xml
# ./bin/post -c techproducts example/exampledocs/solr-word.pdf -params "literal.id=doc1&uprefix=attr_"
java -classpath /opt/bitnami/apache-solr/dist/solr-core-7.5.0.jar -Dauto=yes -Dparams=literal.id=doc1&uprefix=attr_ -Dc=techproducts -Ddata=files org.apache.solr.util.SimplePostTool example/exampledocs/solr-word.pdf
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/techproducts/update?literal.id=doc1&uprefix=attr_...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file solr-word.pdf (application/pdf) to [base]/extract
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/techproducts/update?literal.id=doc1&uprefix=attr_...
Time spent: 0:00:00.501
  • ลองทำการ Query Data โดยระบุคำค้นหาเป็น attr_meta:microsoft

อ่านเพิ่มเติม : https://bit.ly/2Tg87bY

Leave a Reply

Your email address will not be published. Required fields are marked *