2011-10-18 4 views
0

최근에 나는 solr 작업을 보았습니다. 내가 solr에서 색인을 생성하고 내 Java 응용 프로그램을 통해 쿼리하고 싶습니다. 내 응용 프로그램에서 solr.war를 사용하고 싶지 않습니다. solrj api 또는 lucene java api를 통해 어떻게 사용할 수 있습니까? 내 생각은 프로젝트 컨텍스트에서 이러한 인덱스를 추가하고 그것을 사용하는 것입니다. 몇 가지 예제/튜토리얼을 살펴 보았지만 이미 생성 된 인덱스로 작업하는 방법을 찾지 못했습니다. 제발 나에게 적절한 해결책을 말해 또는 솔루션을 지정 링크를 부탁드립니다.Java 응용 프로그램에서 lucene 색인 사용

답변

0

Lucene apis를 사용하여 색인을 작성/업데이트하고 검색 할 수 있습니다.
solr은 lucene을 기반으로하므로 기본 인덱스는 lucene 인덱스입니다.
Lucene은 클래스를 IndexWriter 및 IndexSearcher로 노출하므로 인덱스와 상호 작용할 수 있습니다. SOLR/루씬 인덱스를 통해 검색하는

예 -

Directory index = FSDirectory.open(new File("/path/to/index")); 
IndexSearcher searcher = new IndexSearcher(index, true); 
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); 
searcher.search(q, collector); 
ScoreDoc[] hits = collector.topDocs().scoreDocs; 

이에 대한 예제를 찾을 수 있어야합니다.

+0

Mr. Jayendra 선생님, 정말 도움이되었습니다. –

+0

쿼리 결과를 JSON 형식으로 직접 가져 오는 방법이 있는지 알려주십시오. 우리가 & wt = json으로 얻을 때. –

+0

아니요 .. 이것은 자바 객체만을 다룰 것입니다. – Jayendra

0

예, Lucene에서 Solr로 만든 색인을 사용할 수 있습니다. Solr 자체가 Lucene을 사용하기 때문에 특별한 것이 없습니다. Lucene의 모든 문서는 변경되지 않고 그대로 적용됩니다.

또는 Solr을 서버로 사용하고 싶지 않은 경우 Java 응용 프로그램에서 embedded을 사용할 수 있습니다.

+0

감사합니다. 나는 lucene java api를 사용했다. –

0

내가 이런 식으로 만든 ..

String realPath = request.getRealPath("/"); 
     StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT); 
     Directory index = FSDirectory.open(new File(realPath+"/index")); 
     IndexSearcher indexSearcher = new IndexSearcher(index, true); 
     TopScoreDocCollector collector = TopScoreDocCollector.create(2000, true); 

     QueryParser query = new QueryParser(Version.LUCENE_CURRENT, "name", analyzer); 
     Query q = null; 
     try { 
      q = query.parse("*:*"); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     indexSearcher.search(q, collector); 
     ScoreDoc[] scoreDoc = collector.topDocs().scoreDocs;