2011-10-18 9 views
0

最近、私はsolrに取り組んでいました。私はsolrのインデックスを作成して、私はそれを私のJavaアプリケーションを通してクエリしたいと思います。私は自分のアプリケーションでsolr.warを使いたくない。どうすればsolrj apiまたはlucene java apiで使用できますか?私の考えは、これらのインデックスをプロジェクトのコンテキストに追加して使用することです。私はいくつかの例/チュートリアルを終えましたが、すでに作成されたインデックスを使用する方法については何も見つかりませんでした。適切な解決方法を教えてください。解決方法を指定してリンクを評価してください。Javaアプリケーションでluceneインデックスを使用

答えて

0

Lucene apisを使用して、インデックスを作成/更新して検索することができます。
solrは、ルーゼンに基づいているため、根底にあるインデックスは、ルーゼンインデックスです。
LuceneはIndexWriterとIndexSearcherとしてクラスを公開します。これは、インデックスとのやり取りに役立ちます。 Solrの/ Luceneインデックス上で検索するための

例 -

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

Jayendraさん、ありがとう、本当に助けてくれました。 –

+0

クエリ結果をJSON形式で直接取得する方法があるかどうかを教えてください。我々が&wt = jsonを得るとき。 –

+0

いいえ..これはJavaオブジェクトのみを処理します。 – 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; 
関連する問題