まず、すでに入手したように、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のドキュメントはよく書かれており、多くの例があります。
ありがとうございましたが、最後には何もリンクしていませんでした。「ここを見てください」という言葉をリンクする意味ですか?とにかく、私は既にこのSolrJの例を見ていましたが、私のAndroidアプリケーションを実行する携帯電話のistanceのために、別のマシンでlocalhostを使用することはできません。だから、私の問題はあなたの例で言及したこのurlStringにとどまっていると思います。それをスタンドアロンアプリケーションにすることは素晴らしいですが、WARを使用できず、静的なパブリックIPを持っていない場合、私はどのようにして私のSolrサーバーに接続することができますか? –
あなたの問題は、SolrインスタンスのIPアドレスを取得できないことです。これはSolrの問題ではなく、ネットワークの問題です。インスタンスをどこに配置しましたか、AWS? – freedev
私はどこにでもそれを配備しませんでした。私は自分のマシンにSolrをインストールし、いくつかのドキュメントのインデックスを作成しました。今は、同じマシン上で実行されていないアプリケーションからこのコアをクエリします。 Solr 6のコンテナのようなものはないので、どうすればいいですか? –