2017-03-27 15 views
0

私はSolrの初心者ですが、今ではローカルマシンでインデックスを実行し、いくつかのドキュメントをインデックスに登録しています。私が次に必要とするのは、外部のJavaアプリケーションまたはAndroidアプリケーションによるクエリです。別のマシンからsolrサーバーを使用する

クライアントアプリケーションで使用できるSolrJについては読んだが、サーバー側でSolrを構成する方法がわからない。

私は、TomcatのようなWeb共有機はもはや使用されていないSolr 5.x(私は現在6.3を使用しています)ので、SolrJ内で使用する "localhost:port"の代わりにアドレスを取得する方法を学びました。コール?

答えて

1

まず、すでに入手したように、Solr is no more Webアプリケーションですが、他のNoSqlサーバーと同様に、サーバーと見なす必要があります。

Solrにはそのデフォルト値を持っている、それは通常8983.

私はSolrのは、(コレクション、フィルタおよびトークンチェーン、クエリパーサなど)をどのように動作するかに集中するために、今お勧めだろうとどのようにリスニングHTTPポートを持っています情報検索は一般的に機能します。 Solrの人は非常に簡単なので、これはあなたのサーバー接続を構成するために知っておく必要があるので、サーバーのIPアドレスとポートが何であるかを気にする必要があります。

あなたがAndroidアプリケーションと一緒にSolrを使用する予定であることを考えると、HTTPプロトコルは最も簡単な方法です。

したがって、8983がデフォルトのポートであり、サーバー管理(http://localhost:8983/solr)およびHTTPクライアントに接続するために使用されます。

SolrJクライアントは、基本的にHTTPプロトコルを使用して要求を送信します。たとえば、Solrがクラウドモードで設定されている場合は例外がありますが、企業やエンタープライズの大規模な構成の場合は例外です。

ここでは、my-collectionコレクションのSolrJ 6.3クライアントSolrClientの作成方法について説明します。

String urlString = "http://localhost:8983/solr/my-collection"; 
SolrClient solrClient = new HttpSolrClient.Builder(urlString).build(); 

例えば、簡単なSolrのクエリを比較してみましょう:SolrJ換算で

http://localhost:8983/solr/my-collection/select?q=*:*&rows=10 

SolrQuery solrQuery = new SolrQuery(); 
solrQuery.setQuery("*:*"); // means no filters, get everything 
solrQuery.setRows(10); // but I want only the first 10 rows 

ので、SolrQueryクラスを使用すると、クエリのほとんどを書くためのインタフェースであり、考えることができます。

そして、そこにどのようにそれを提出する:

QueryResponse response = solrClient.query(solrQuery); // submit your query 

今すぐクエリが送信されており、応答は通常、うまくそれはあなたが実行しているクエリの種類から異なりますが、私が言っている、すぐに戻り、通常Solrは非常に高速です。

残りのコードは、コレクション内のドキュメント数を表示します。 そしてそれらを介在させます。

System.out.println(response.getResults().getNumFound()); 
for(SolrDocument d : response.getResults()) { 
    System.out.println(d.get("field_name").toString()); 
} 

SolrとSolrJのドキュメントはよく書かれており、多くの例があります。

+0

ありがとうございましたが、最後には何もリンクしていませんでした。「ここを見てください」という言葉をリンクする意味ですか?とにかく、私は既にこのSolrJの例を見ていましたが、私のAndroidアプリケーションを実行する携帯電話のistanceのために、別のマシンでlocalhostを使用することはできません。だから、私の問題はあなたの例で言及したこのurlStringにとどまっていると思います。それをスタンドアロンアプリケーションにすることは素晴らしいですが、WARを使用できず、静的なパブリックIPを持っていない場合、私はどのようにして私のSolrサーバーに接続することができますか? –

+0

あなたの問題は、SolrインスタンスのIPアドレスを取得できないことです。これはSolrの問題ではなく、ネットワークの問題です。インスタンスをどこに配置しましたか、AWS? – freedev

+0

私はどこにでもそれを配備しませんでした。私は自分のマシンにSolrをインストールし、いくつかのドキュメントのインデックスを作成しました。今は、同じマシン上で実行されていないアプリケーションからこのコアをクエリします。 Solr 6のコンテナのようなものはないので、どうすればいいですか? –

関連する問題