2013-04-02 3 views
0

은 데이터베이스 검색을 위해 lucene 3.6.2 검색 엔진 을 구현하는 데스크톱 응용 프로그램이 있습니다. 데이터베이스에는 날짜 및 문자 데이터 유형이 모두 인 열이 있습니다. 일부 컬럼은 널 (NULL) 필드도 포함 할 수 있습니다. Datetools도 루씬 분석을 위해 String으로 날짜를 변환하는 데 사용됩니다 그러나 루씬 분석을 위해 문서 컨테이너 에 날짜 컬럼에서 널 (null) 필드를 추가 할 수 없습니다 때처럼 보인다.null 필드가있는 Lucene 문서 컨테이너

doc = new Document(); 


     if(rs.getDate("DATE_OF_LETTER")== null) 
     { doc.add(new Field("date_of_letter","",Field.Store.YES,Field.Index.ANALYZED)); } 
     else { 
     doc.add(new Field("date_of_letter",DateTools.dateToString(rs.getDate("DATE_OF_LETTER"), 
       DateTools.Resolution.DAY),Field.Store.YES,Field.Index.ANALYZED)); 
     }  

     if(rs.getDate("DATE_RECEIVED")== null) 
     { doc.add(new Field("date_received","",Field.Store.YES,Field.Index.ANALYZED)); } 
     else { 
      doc.add(new Field("date_received",DateTools.dateToString(rs.getDate("DATE_RECEIVED"), 
       DateTools.Resolution.DAY),Field.Store.YES,Field.Index.ANALYZED)); 
     }  

     if(rs.getString("REMARKS")== null) 
     { doc.add(new Field("remarks","",Field.Store.YES,Field.Index.ANALYZED)); } 
     else { 
     doc.add(new Field("remarks",rs.getString("REMARKS"),Field.Store.YES,Field.Index.ANALYZED)); } 

      if(rs.getDate("DATE_DISPATCHED")== null) 
     { doc.add(new Field("date_dispatched","",Field.Store.YES,Field.Index.ANALYZED)); } 
     else { 
     doc.add(new Field("date_dispatched",DateTools.dateToString(rs.getDate("DATE_DISPATCHED"), 
       DateTools.Resolution.MINUTE),Field.Store.YES,Field.Index.ANALYZED)); 

       }  
      } 
     iw.addDocument(doc); 
     } 



    } 

어떤 제안 :

나는 아래의 코드 조각을 제시한다.

+0

이후 색인을 검사 할 때 오류가 발생하거나 필드 값이 null입니까? –

+0

조회수가 있지만 lucene이 결과를 반환하지는 않지만 netbeans 콘솔에서 오류가 발생하지 않습니다. 그리고 색인을 검사하려면 어떻게해야합니까? lucene을 처음 사용하십시오 – CodeAngel

+0

색인을 검사 할 수있는 도구가 있습니다 : http://www.getopt.org/luke/ - 도구를보고 필드가 설정되어 있는지 확인하십시오 lucene 지수에서. –

답변

0

이 줄 :

doc.add(new Field("date_received","",Field.Store.YES,Field.Index.ANALYZED)); 

정말 아무것도하지 않습니다. 색인을 작성할 항목이 없습니다. 필드를 저장할 수도 있지만 (확실하지는 않습니다.) 어떤 방식 으로든 색인이 생성되지 않으므로 검색 할 수 없습니다. Lucene은 토큰을 색인하고 빈 문자열에는 토큰이 없으므로 색인을 생성 할 것이없고 검색 할 내용이 없습니다.

null을 검색하려면, 다음과 같이 자리 표시 자 값을 색인화해야합니다.

doc.add(new Field("date_received","null",Field.Store.YES,Field.Index.ANALYZED)); 
관련 문제