2012-01-23 5 views
2

저는 Lucene 3.5.0을 사용하여 제 웹 사이트에서 기본적인 검색 작업을하고 있습니다. 내 MySQL 데이터베이스의 JDBC 디렉토리에 인덱스를 저장하고 싶습니다. Compass Project를 사용하여이 작업을 수행하려고했지만 더 많은 연구와 실제로 코드를 사용해 보았을 때 Compass는 죽은 프로젝트이며 더 이상 Lucene의 현재 버전과 호환되지 않습니다.Lucene JDBC 디렉토리

내 색인을 JDBC 디렉토리에 저장하는 다른 옵션이 있습니까? Lucene이이 기본 언어를 제공하지 않는 이유가 있습니까? 어떤 이유로 HDD를 더 나은 옵션으로 저장합니까? FAQ에서

+0

JDBC 디렉토리 란 무엇입니까? 왜 DB에 넣고 싶습니까? –

+0

JDBC 디렉토리는 인덱스를 저장하기 위해 데이터베이스에 테이블을 만드는 데 사용하는 방법입니다. 솔직히, 나는 그것이 접근하기가 쉽지 않다는 이유로 접근하고 싶다. 인덱스 된 데이터베이스를 저장하는 가장 좋은 장소는 데이터베이스 자체에있는 것 같다. 디렉토리가 더 나은 옵션이라면 나는 확신 할 수있다. – ryandlf

+0

아, 나는 오해했다. 감사. 어떻게 더 쉬울 지 모르겠다. 또한 DB 인덱스 및 작업은 다른 유형의 문제에 대해 조정 된 것처럼 보입니다. –

답변

1

:

루씬은 상자에서 해당 기능을 지원하지 않지만 여러 사람이 JdbcDirectory's을 구현했습니다. 지금까지 살펴본 보고서에 따르면 이러한 구현을 사용한 성능은 좋지 않지만 수행 가능합니다.

또 다른 방법은 인덱스를 데이터베이스에 BLOB으로 저장하는 것입니다.이 방법은 응용 프로그램을 실행하는 노드가 여러 개인 경우 유용 할 수 있습니다. BLOB에 타임 스탬프를 추가하면 각 노드는 인덱스가 업데이트되었는지 확인하고 DB에서 인덱스 파일을 다시 만들 수 있습니다.

+0

인덱스를 BLOB로 저장하는 방법에 대한 예제를 귀찮게 할 수 있습니까? 나는 결코 그것을 해본 적이 없으며 Lucene에서 구현하는 방법을 모른다. – ryandlf

+0

@ryandlf 예 : hibernate와 함께 http://stackoverflow.com/questions/939673/how-is-a-blob-column-annotated-in-hibernate 당신은 파일을 읽고 그 내용을 바이트 배열에 저장한다. – stacker

+0

좋아, 그만큼 쉬울 지 모르지만 나는 그것에 대해 조사 할 것이다. Lucene은 데이터베이스를 인덱싱 할 때마다 여러 가지 파일을 만듭니다. – ryandlf