অ্যাপাচি টিকা একটি ওপেন-সোর্স content analysis toolkit যা বিভিন্ন ফাইল ফরম্যাট থেকে ডেটা এবং মেটাডেটা এক্সট্র্যাক্ট করতে পারে। কিন্তু অনেক সময় প্রয়োজন হয় custom file types এর জন্য একটি বিশেষ Tika Parser তৈরি করার। এটি তখনই প্রয়োজন হয় যখন টিকার ডিফল্ট পার্সার কোনো নির্দিষ্ট ফাইল ফরম্যাট সাপোর্ট করে না।
Custom Parser কী এবং কেন প্রয়োজন?
Custom Parser হলো এমন একটি পার্সার যা টিকার সাথে ইন্টিগ্রেট করা হয় এবং নির্দিষ্ট ফাইল ফরম্যাট থেকে টেক্সট বা মেটাডেটা এক্সট্র্যাক্ট করার কাজ করে।
যখন আপনার কাছে এমন একটি ফাইল ফরম্যাট থাকে যা:
- Tika এর ডিফল্ট পার্সার সাপোর্ট করে না।
- স্পেশাল কন্টেন্ট বা লজিক দিয়ে প্রসেস করতে হয়।
- নির্দিষ্ট ব্যাবসায়িক প্রয়োজন অনুযায়ী পার্সিং দরকার।
Custom Tika Parser তৈরি করার ধাপ
১. Maven প্রজেক্ট সেটআপ
প্রথমে একটি Maven প্রজেক্ট তৈরি করুন এবং নিচের Tika Dependencies যোগ করুন:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>2.9.0</version>
</dependency>
২. Custom Parser ইমপ্লিমেন্ট করা
Custom Parser তৈরি করতে AbstractParser ক্লাসকে এক্সটেন্ড করতে হবে এবং প্রয়োজনীয় parse() মেথড ওভাররাইড করতে হবে।
নিচে একটি উদাহরণ দেখানো হলো যেখানে ".custom" ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করা হয়েছে:
import org.apache.tika.parser.AbstractParser;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.sax.XHTMLContentHandler;
import org.xml.sax.ContentHandler;
import java.io.InputStream;
import java.util.Set;
import java.util.Collections;
public class CustomFileParser extends AbstractParser {
private static final Set<org.apache.tika.mime.MediaType> SUPPORTED_TYPES =
Collections.singleton(org.apache.tika.mime.MediaType.application("x-custom"));
@Override
public Set<org.apache.tika.mime.MediaType> getSupportedTypes(ParseContext context) {
return SUPPORTED_TYPES; // ফাইল টাইপ রেজিস্ট্রেশন
}
@Override
public void parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) {
try {
// XHTMLContentHandler ব্যবহার করে টেক্সট আউটপুট তৈরি
XHTMLContentHandler xhtml = new XHTMLContentHandler(handler, metadata);
xhtml.startDocument();
// Custom ফাইল থেকে ডেটা পড়া
String extractedText = "This is a custom parsed content.";
xhtml.characters(extractedText);
xhtml.endDocument();
} catch (Exception e) {
throw new RuntimeException("Error while parsing custom file", e);
}
}
}
৩. Custom MIME টাইপ ডিফাইন করা
Custom ফাইল টাইপের জন্য একটি MIME টাইপ ডিফাইন করতে হবে। tika-mimetypes.xml নামে একটি কনফিগারেশন ফাইল তৈরি করুন:
<mime-info>
<mime-type type="application/x-custom">
<glob pattern="*.custom"/>
</mime-type>
</mime-info>
৪. Service Loader ফাইল তৈরি করা
Custom Parser কে Tika এর সাথে রেজিস্টার করতে হলে Service Loader ফাইল তৈরি করতে হবে।
ফাইল পাথ:
src/main/resources/META-INF/services/org.apache.tika.parser.Parser
ফাইল কন্টেন্ট:
com.example.CustomFileParser
৫. Custom Parser টেস্ট করা
নিচে একটি টেস্ট কোড রয়েছে যা Custom Parser ব্যবহার করে ".custom" ফাইল থেকে টেক্সট এক্সট্র্যাক্ট করে:
import org.apache.tika.Tika;
import java.io.File;
public class CustomParserTest {
public static void main(String[] args) throws Exception {
Tika tika = new Tika();
// Custom ফাইল প্রসেস করা
File file = new File("example.custom");
String content = tika.parseToString(file);
System.out.println("Extracted Content: " + content);
}
}
কীভাবে এটি কাজ করে?
- Custom Parser Implementation: নতুন Parser তৈরি করা হয়েছে যা
.customফাইল সাপোর্ট করে। - MIME Type Registration: Custom MIME টাইপ application/x-custom রেজিস্টার করা হয়েছে।
- Service Loader: Tika এর সাথে নতুন Parser রেজিস্টার করার জন্য Service Loader ব্যবহার করা হয়েছে।
- Tika Integration: Tika অ্যাপ্লিকেশন থেকে Custom Parser অটোমেটিক্যালি লোড এবং এক্সিকিউট করা হয়েছে।
আউটপুট
ফাইল example.custom থেকে নিচের আউটপুট আসতে পারে:
Extracted Content: This is a custom parsed content.
সারাংশ
Custom Tika Parser তৈরি করে আপনি বিশেষ ধরণের ফাইল ফরম্যাট থেকে ডেটা এবং মেটাডেটা এক্সট্র্যাক্ট করতে পারেন। এটি Tika MIME টাইপ রেজিস্ট্রেশন, Custom Parser Implementation, এবং Service Loader এর সমন্বয়ে কার্যকরী হয়। আপনার প্রয়োজন অনুযায়ী ফাইল প্রসেসিং লজিক সংযোগ করে এটি উন্নত করা সম্ভব।