2013-03-19 5 views
3

json 객체 세트를 lucene 인덱스에 저장하고 인덱스에서 검색하려고합니다. 나는 lucene-3.4를 사용하고있다.lucene 인덱스와 Json 객체 저장 및 검색

그래서 lucene에서 이런 일이 발생하게하는 라이브러리 나 쉬운 메커니즘이 있습니다. 샘플에 대한

: JSON 객체 도움의 어떤 종류를 알 수있을 것이다

{ 
    BOOKNAME1: { 
     id:1, 
     name:"bname1", 
     price:"p1" 
    }, 
    BOOKNAME2: { 
     id:2, 
     name:"bname2", 
     price:"p2" 
    }, 
    BOOKNAME3: { 
     id:3, 
     name:"bname3", 
     price:"p3" 
    } 
} 

. 미리 감사드립니다.

+0

인덱스의 각 항목이 JSON 개체라고 가정합니다. 틀렸을 경우 수정하십시오. 개체의 내부 구성 요소를 검색 할 수있게 하시겠습니까? 예를 들어 bname2를 검색하면 해당 json 객체가 반환됩니다. 현장 검색을 원하십니까? 즉 "id : 2", "price : p3"종류의 검색 기능을 제공합니다. – phani

+0

@phani 아니오 json 필드에서 검색하고 싶지 않습니다. 그냥 json 객체 인 –

+0

으로 저장하고 검색하기를 원한다면, javanna가 이미 요구 사항을 충족시키는 것으로 대답했다. 그러나, 각 json 개체와 관련된 고유 ID가 있는지 여부는 확실하지 않습니다. – phani

답변

4

json 내에서 검색하고 싶지는 않지만 저장 만하려는 경우 ID 만 추출하면됩니다. 고유 한 ID가 필요합니다. 그것은 (만 저장) 당신이 당신의 JSON을 저장하면

한,

  • 아이디 (색인, 반드시 저장되지)
  • json으로 자체 : 그런 다음 루씬 문서는 두 개의 필드 것 lucene 당신은 그것을 ID로 필터링하여 검색 할 수 있습니다.

    반면에 이것은 elasticsearch이 문서에서 수행하는 것과 거의 같습니다. REST API를 통해 json을 보내면됩니다. elasticsearch는 그대로 json을 유지하고 기본적으로 검색 할 수있게합니다. 즉, ID로 json을 검색하거나 코드를 쓰지 않고도 즉시 검색 할 수 있습니다.

    또한 lucene을 사용하면 문서를 커밋하거나 인덱스 판독기를 다시 열 때까지 문서를 사용할 수없고 elasticsearch에 편리한 트랜잭션 로그가 추가되므로 GET은 항상 실시간입니다.

    또한 elasticsearch는 멋진 분산 인프라, 패싯 (faceting), 스크립팅 등을 제공합니다. 확인 해봐!

7

나는에 의해 인덱스에 JSON 개체를 추천 할 것입니다 :

1) 당신의 JSON 파일을 구문 분석합니다. 나는 보통 json simple을 사용합니다.

2) 색인에 문서를 추가)

3 IndexWriterConfig

를 사용하여 인덱스를 엽니 다. 대신 elasticsearch의 루씬 코어를 사용하려는 경우

4) 인덱스

5) 쿼리

실행을하여 변경 내용을 커밋하고 닫습니다, I는 입력 A로 유도 할 수있는 샘플 프로젝트를 만들었습니다 JSON 객체로 파일을 만들고 색인을 만듭니다. 또한 색인을 쿼리하는 테스트를 추가했습니다.

http://ignaciosuay.com/getting-started-with-lucene-and-json-indexing/

당신은 시간이 있다면, 나는 그것을 "액션 루씬"을 읽어 가치가있다 생각 : 나는 최신 루씬 버전 (4.8)을 사용하고

, 여기 봐주십시오.

희망이 있습니다.

+1

이것은 선택된 대답이어야합니다 (실제 질문을 다룹니다)! –