lucene에서 pdf를 text로 변환하는 소스다.
이렇게 text로 변환이 되어만 주면 lucene에서 indexing을 통해 해당 문서를 검색할 수 있다. 굿!!
이 소스는 aoJX 님이 공개해주셨다. 원래 소스에서 pdf를 읽는 경로를 인자로 받아 처리하는 부분만 조금 수정했다.
원래 소스의 경로는 이곳에 http://blog.naver.com/kgj1?Redirect=Log&logNo=108051492
이와 관련한 아파치 프로젝트인 pdfbox 가 있는데 그 프로젝트도 참고!!
이렇게 text로 변환이 되어만 주면 lucene에서 indexing을 통해 해당 문서를 검색할 수 있다. 굿!!
이 소스는 aoJX 님이 공개해주셨다. 원래 소스에서 pdf를 읽는 경로를 인자로 받아 처리하는 부분만 조금 수정했다.
원래 소스의 경로는 이곳에 http://blog.naver.com/kgj1?Redirect=Log&logNo=108051492
이와 관련한 아파치 프로젝트인 pdfbox 가 있는데 그 프로젝트도 참고!!
package org.apache.lucene.demo;
import java.io.*;
import java.util.Arrays;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
//import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.util.PDFTextStripper;
public class PDFReader
{
public static void main(String[] args)
{
if(args.length < 1)
{
System.out.println("arguments is not enough!!!");
return;
}
//String fullPath = "/dev/eden/Doc/";
String fullPath = args[0];
System.out.println(fullPath + " PDF files parsing and converting TXT files.");
File file = new File(fullPath);
String[] files = file.list(); // list its files
Arrays.sort(files); // sort the files
for(int i=0; i<files.length; i++) // recursively index them
{
String fileName = files[i];
if((new File(fullPath+fileName)).isDirectory()) continue;
System.out.println(fileName);
try
{
InputStream in = new FileInputStream(new File(fullPath+fileName));
String text = null;
PDFParser pdfp = new PDFParser(in);
pdfp.parse();
PDDocument pdd = pdfp.getPDDocument();
COSDocument cos = pdfp.getDocument();
PDFTextStripper pdfts = new PDFTextStripper();
//PDDocumentInformation pddi = pdd.getDocumentInformation();
pdfts.setLineSeparator("\n");
pdfts.setWordSeparator(" ");
text = pdfts.getText(pdd);
cos.close();
pdd.close();
//BufferedWriter bw = new BufferedWriter(new FileWriter(fullPath+"txt/"+fileName.substring(0,fileName.length()-3)+"txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter(args[1]+fileName.substring(0,fileName.length()-3)+"txt"));
bw.write(text);
bw.close();
}
catch(Exception e)
{
System.out.println("error : " + e);
}
}
System.out.println("finished! : " + (files.length-1) + " files created.");
}
}
import java.io.*;
import java.util.Arrays;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
//import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.util.PDFTextStripper;
public class PDFReader
{
public static void main(String[] args)
{
if(args.length < 1)
{
System.out.println("arguments is not enough!!!");
return;
}
//String fullPath = "/dev/eden/Doc/";
String fullPath = args[0];
System.out.println(fullPath + " PDF files parsing and converting TXT files.");
File file = new File(fullPath);
String[] files = file.list(); // list its files
Arrays.sort(files); // sort the files
for(int i=0; i<files.length; i++) // recursively index them
{
String fileName = files[i];
if((new File(fullPath+fileName)).isDirectory()) continue;
System.out.println(fileName);
try
{
InputStream in = new FileInputStream(new File(fullPath+fileName));
String text = null;
PDFParser pdfp = new PDFParser(in);
pdfp.parse();
PDDocument pdd = pdfp.getPDDocument();
COSDocument cos = pdfp.getDocument();
PDFTextStripper pdfts = new PDFTextStripper();
//PDDocumentInformation pddi = pdd.getDocumentInformation();
pdfts.setLineSeparator("\n");
pdfts.setWordSeparator(" ");
text = pdfts.getText(pdd);
cos.close();
pdd.close();
//BufferedWriter bw = new BufferedWriter(new FileWriter(fullPath+"txt/"+fileName.substring(0,fileName.length()-3)+"txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter(args[1]+fileName.substring(0,fileName.length()-3)+"txt"));
bw.write(text);
bw.close();
}
catch(Exception e)
{
System.out.println("error : " + e);
}
}
System.out.println("finished! : " + (files.length-1) + " files created.");
}
}
'Dev > search engine' 카테고리의 다른 글
search engine reference (0) | 2010.09.28 |
---|---|
[펌] lucene 한글 형태소 분석기 (1) | 2010.09.09 |
[펌] 검색엔진의 원리와 Lucene (1) | 2010.09.09 |
구글 검색엔진에 sitemap 등록하기 (2) | 2010.08.14 |