TIKA - การแยกข้อมูลเมตา
นอกจากเนื้อหาแล้ว Tika ยังแยกข้อมูลเมตาจากไฟล์ ข้อมูลเมตาคืออะไรนอกจากข้อมูลเพิ่มเติมที่มาพร้อมกับไฟล์ หากเราพิจารณาไฟล์เสียงชื่อศิลปินชื่ออัลบั้มชื่อจะอยู่ภายใต้ข้อมูลเมตา
มาตรฐาน XMP
Extensible Metadata Platform (XMP) เป็นมาตรฐานสำหรับการประมวลผลและจัดเก็บข้อมูลที่เกี่ยวข้องกับเนื้อหาของไฟล์ มันถูกสร้างขึ้นโดยAdobe Systems Inc XMP ให้มาตรฐานสำหรับการกำหนด, การสร้างและการประมวลผลของเมตาดาต้า คุณสามารถฝังมาตรฐานนี้ลงในไฟล์ได้หลายรูปแบบเช่นPDF , JPEG , JPEG , GIF , jpg , HTMLเป็นต้น
ชั้นทรัพย์สิน
Tika ใช้คลาส Property เพื่อทำตามนิยามคุณสมบัติ XMP จัดเตรียมPropertyTypeและValueType enums เพื่อบันทึกชื่อและค่าของข้อมูลเมตา
คลาสข้อมูลเมตา
คลาสนี้ใช้อินเทอร์เฟซต่างๆเช่นClimateForcast , CativeCommons, Geographic , TIFF เป็นต้นเพื่อให้การสนับสนุนสำหรับโมเดลข้อมูลเมตาต่างๆ นอกจากนี้คลาสนี้ยังมีวิธีการต่างๆในการแยกเนื้อหาออกจากไฟล์
ชื่อข้อมูลเมตา
เราสามารถแยกรายชื่อของชื่อข้อมูลเมตาของไฟล์จากวัตถุข้อมูลเมตาของมันโดยใช้วิธีการชื่อ () ส่งคืนชื่อทั้งหมดเป็นสตริงอาร์เรย์ ใช้ชื่อของข้อมูลเมตาเราจะได้รับค่าโดยใช้get()วิธี. ใช้ชื่อข้อมูลเมตาและส่งคืนค่าที่เกี่ยวข้อง
String[] metadaNames = metadata.names();
String value = metadata.get(name);
การแยกข้อมูลเมตาโดยใช้วิธีแยกวิเคราะห์
เมื่อใดก็ตามที่เราแยกวิเคราะห์ไฟล์โดยใช้ parse () เราจะส่งออบเจ็กต์ข้อมูลเมตาที่ว่างเปล่าเป็นหนึ่งในพารามิเตอร์ วิธีนี้จะแยกข้อมูลเมตาของไฟล์ที่กำหนด (หากไฟล์นั้นมี) และวางไว้ในออบเจ็กต์ข้อมูลเมตา ดังนั้นหลังจากแยกวิเคราะห์ไฟล์โดยใช้ parse () เราสามารถแยกข้อมูลเมตาจากวัตถุนั้นได้
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata(); //empty metadata object
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);
// now this metadata object contains the extracted metadata of the given file.
metadata.metadata.names();
ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ในการแยกข้อมูลเมตาจากไฟล์ข้อความ
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class GetMetadata {
public static void main(final String[] args) throws IOException, TikaException {
//Assume that boy.jpg is in your current directory
File file = new File("boy.jpg");
//Parser method parameters
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);
System.out.println(handler.toString());
//getting the list of all meta data elements
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
บันทึกรหัสด้านบนเป็น GetMetadata.java และเรียกใช้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -
javac GetMetadata .java
java GetMetadata
ด้านล่างคือภาพรวมของ boy.jpg
หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -
X-Parsed-By: org.apache.tika.parser.DefaultParser
Resolution Units: inch
Compression Type: Baseline
Data Precision: 8 bits
Number of Components: 3
tiff:ImageLength: 3000
Component 2: Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
Component 1: Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
Image Height: 3000 pixels
X Resolution: 300 dots
Original Transmission Reference:
53616c7465645f5f2368da84ca932841b336ac1a49edb1a93fae938b8db2cb3ec9cc4dc28d7383f1
Image Width: 4000 pixels
IPTC-NAA record: 92 bytes binary data
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
tiff:BitsPerSample: 8
Application Record Version: 4
tiff:ImageWidth: 4000
Content-Type: image/jpeg
Y Resolution: 300 dots
เรายังสามารถรับค่าข้อมูลเมตาที่ต้องการได้อีกด้วย
การเพิ่มค่า Metadata ใหม่
เราสามารถเพิ่มค่าเมทาดาทาใหม่โดยใช้เมธอด add () ของคลาสเมทาดาทา ให้ด้านล่างเป็นไวยากรณ์ของวิธีนี้ ที่นี่เรากำลังเพิ่มชื่อผู้แต่ง
metadata.add(“author”,”Tutorials point”);
คลาส Metadata มีคุณสมบัติที่กำหนดไว้ล่วงหน้ารวมถึงคุณสมบัติที่สืบทอดมาจากคลาสเช่นClimateForcast , CativeCommons, Geographicเป็นต้นเพื่อรองรับโมเดลข้อมูลต่างๆ ด้านล่างนี้คือการใช้ประเภทข้อมูล SOFTWARE ที่สืบทอดมาจากอินเทอร์เฟซ TIFF ที่ Tika นำมาใช้เพื่อปฏิบัติตามมาตรฐานข้อมูลเมตา XMP สำหรับรูปแบบภาพ TIFF
metadata.add(Metadata.SOFTWARE,"ms paint");
ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ที่สาธิตวิธีการเพิ่มค่าข้อมูลเมตาให้กับไฟล์ที่กำหนด รายการองค์ประกอบข้อมูลเมตาจะแสดงในผลลัพธ์เพื่อให้คุณสามารถสังเกตการเปลี่ยนแปลงในรายการหลังจากเพิ่มค่าใหม่
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class AddMetadata {
public static void main(final String[] args) throws IOException, SAXException, TikaException {
//create a file object and assume sample.txt is in your current directory
File file = new File("Example.txt");
//Parser method parameters
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
//parsing the document
parser.parse(inputstream, handler, metadata, context);
//list of meta data elements before adding new elements
System.out.println( " metadata elements :" +Arrays.toString(metadata.names()));
//adding new meta data name value pair
metadata.add("Author","Tutorials Point");
System.out.println(" metadata name value pair is successfully added");
//printing all the meta data elements after adding new elements
System.out.println("Here is the list of all the metadata
elements after adding new elements");
System.out.println( Arrays.toString(metadata.names()));
}
}
บันทึกรหัสด้านบนเป็นคลาส AddMetadata.java และเรียกใช้จากพรอมต์คำสั่ง -
javac AddMetadata .java
java AddMetadata
ด้านล่างเป็นเนื้อหาของ Example.txt
Hi students welcome to tutorialspoint
หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -
metadata elements of the given file :
[Content-Encoding, Content-Type]
enter the number of metadata name value pairs to be added 1
enter metadata1name:
Author enter metadata1value:
Tutorials point metadata name value pair is successfully added
Here is the list of all the metadata elements after adding new elements
[Content-Encoding, Author, Content-Type]
การตั้งค่าให้กับองค์ประกอบข้อมูลเมตาที่มีอยู่
คุณสามารถตั้งค่าให้กับองค์ประกอบข้อมูลเมตาที่มีอยู่โดยใช้เมธอด set () ไวยากรณ์ของการตั้งค่าคุณสมบัติวันที่โดยใช้เมธอด set () มีดังนี้ -
metadata.set(Metadata.DATE, new Date());
คุณยังสามารถตั้งค่าหลายค่าให้กับคุณสมบัติโดยใช้เมธอด set () ไวยากรณ์ของการตั้งค่าหลายค่าให้กับคุณสมบัติ Author โดยใช้เมธอด set () มีดังนี้ -
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ที่แสดงวิธี set ()
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class SetMetadata {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//Create a file object and assume example.txt is in your current directory
File file = new File("example.txt");
//parameters of parse() method
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
//Parsing the given file
parser.parse(inputstream, handler, metadata, context);
//list of meta data elements elements
System.out.println( " metadata elements and values of the given file :");
String[] metadataNamesb4 = metadata.names();
for(String name : metadataNamesb4) {
System.out.println(name + ": " + metadata.get(name));
}
//setting date meta data
metadata.set(Metadata.DATE, new Date());
//setting multiple values to author property
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
//printing all the meta data elements with new elements
System.out.println("List of all the metadata elements after adding new elements ");
String[] metadataNamesafter = metadata.names();
for(String name : metadataNamesafter) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
บันทึกรหัสด้านบนเป็น SetMetadata.java และเรียกใช้จากพรอมต์คำสั่ง -
javac SetMetadata.java
java SetMetadata
ด้านล่างเป็นเนื้อหาของ example.txt
Hi students welcome to tutorialspoint
หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ ในผลลัพธ์คุณสามารถสังเกตองค์ประกอบข้อมูลเมตาที่เพิ่มใหม่ได้
metadata elements and values of the given file :
Content-Encoding: ISO-8859-1
Content-Type: text/plain; charset = ISO-8859-1
Here is the list of all the metadata elements after adding new elements
date: 2014-09-24T07:01:32Z
Content-Encoding: ISO-8859-1
Author: ram, raheem, robin
Content-Type: text/plain; charset = ISO-8859-1