SolrJの使用
英語:http://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr
日本語:http://wiki.chenlb.com/solr/doku.php?id=solrj
Solrは独立した企業級検索アプリケーションサーバであり、それはWeb-serviceと似たAPIインターフェースを提供している。ユーザーはhttp要求を通じて、検索エンジンサーバに一定のフォーマットのXMLファイルを提出し、インデックスを生成することができます。Http G Solret操作により検索要求を提出し、XML形式の戻り結果を得ることもできる。
Solrjは、SolrのJavaクライアントにアクセスし、Solrインデックスを追加、更新、および照会するインターフェースを提供する。
Commons Http SolServer
Commons HttpSolrServerはHTTPClientを使ってsorサーバと通信しています。
String url="http://localhost:8983/solr";
SolServer server=new Commons HttpSolrServer;
Commons HttpSolrServerはスレッドセキュリティであり、Commons HttpSolrServerの例を繰り返し使用することを提案しています。
セッティングXMLResponseParsser
sorlr Jは現在、標準のフォーマットとしてバイナリのフォーマットを使用しています。ソロ1.2のユーザには、表示された設定によってXMLフォーマットが使用される。
server.set Parsser(new XMLResonseParsser();
Changing other Connection Settings
Commons Http SorlrServerはリンク属性の設定を許可します。
String url="http://localhost:8983/solr「
Commons Http SolrServer=new Commons Http SolrServer;
server.set SoTimeout(1000)//socket read timeout
server.set Connection Timeout(100)
server.set Default MaxConnection PerHost(100)
server.set MaxTotal Connection(100)
server.set Follow Redirects(false)//defaults to false
//allowCommpression defaults to false.
//Server side must support gzip or deflate for this to have any effect.
server.set AllowCompration(true)
server.setMaxRetries(1)//defaults to 0.>>1 not recommanded.
EmboddedSolServer
EmbodSorrServerはCommons Http SorlrServerと同じインターフェースを提供しています。http接続は必要ありません。
//注意、下の属性もjvmパラメータに設定できます。
System.set Property(「sor.sor.home」、「/home/sharlinsmanner/work/Obranch-1.3/example/sour」);
CoreCoreContiner.Initializer=new CoreCoreContiner.Initializer()
CoreContiner coreContiner=initializer.initialize()
EmbodedSolrServer=new EmbodSolrServer;
Multicare特性を使いたいなら、このように使ってもいいです。
File home=new File(getSolrHome);
File f=new File(home,「sor.xml」);
multicare.load(getSolHome(),f);
EmboddedSolrServer=new EmbodSolrServer(multicare);
あなたがプロジェクトにsorサービスを組み込むなら、それはいい選択です。httpを使ってもいいですか?同じインターフェースを提供します。
使い方
ソロjは、要求をソロサーバに提出し、応答を受信するための拡張可能なフレームワークとして設計される。
私たちはすでに最も一般的ないくつかのコマンドをsorServerクラスに封入しました。
Adding Data to Solr まずserverの実例を得る必要があります。 ソウルセーバー=get SolrServer()もし、あなたがリモートのsorServerを使ったら、このようにget SolrServerを実現するかもしれません。 public SolrServer getSolrServer()
//the instance can be reused
return new Commons Http SolServer()
)
もしあなたが地元のsorServerを使っているなら、このようにget SolrServerを実現することができます。 public SolrServer getSolrServer()
//the instance can be reused
return new EmbodSolServer()
)
データを追加する前に既存のインデックスをクリアしたいなら、そうしてもいいです。
server.deleteByQuery(「*」)//delete everrything
document を構築します。
SolrInput Dock doc 1=new SolrInput Dockment()
doc 1.addField(「id」、「id 1」、1.0 f)
doc 1.addField(「name」、「doc 1」、1.0 f)
doc 1.addField(「price」、10)
は、他の文書を構成しており、各文書はソロに提出することができるが、大量提出はより効率的である。どれもSolrServerに対する要求はhttp要求です。もちろんEmbodSolServerにとっては違います。 SolrInput Docment doc 2=new SolrInput Dockment()
doc 2.addField(「id」、「id 2」、1.0 f)
doc 2.addField(「name」、「doc 2」、1.0 f)
doc 2.addField(「price」、20)
は、1つの文書のセット を構成する。
Collection<SolInput Dcument>docs=new ArayList<SolrInput Dcument>();
docs.add(doc 1)
docs.add(doc 2)
は、documentsをsor に提出する。
server.add(docs)
commt を提出します。
server.co mmit() documentsを追加した後、すぐにcomitを作って、あなたのプログラムを書きに来てもいいです。 UpdateRequest req=new UpdateRequest()
req.setAction(UpdateRequest.ACT ION.COMMIT、false、false);
req.add(docs)
UpdateResonse rsp=req.process;
Streaming documents for an udate
多くの場合、Streaming UpdateSolrServerも有用です。もしあなたが使うのがsor 1.4以上のバージョンなら、下のコードが使えるかもしれません。下記のような方法は使いやすいです。特にサーバーにデータを提出する時に。
..
you may also use the addBens beansIter)method to write pojos
Directly adding POJOs to Solr javaコメントを使ってjava beanを作成します。@Fieldは、ドメインまたはsetter方法で使用することができる。ドメイン名がbeanの名前と異なる場合、javaのコメントに別名を記入します。具体的には、以下のドメインcategoriesを参照してください。 import org.apache.sorc.lient.sorj.beans.Field;
public class Item{
@Field
String id
@Field(「cat」)
String[]categories;
@Field
Listfeature;
)
java注釈は、以下の例:
@Field(「cat」)
public void set Category(String[]c){
this.categories=c
)
ここでは相対的な、getメソッド(java注釈が付けられていない)が属性を読み取ります。 Get an instance of server ソウルセーバー=get SolrServer()
バーンのインスタンス を作成します。
Item item=new Item()
item.id=「one」
item.categories=new String[]{aaa]、「bb」、「ccc」;
ソロに追加 server.addBen(item)
は、複数のbeanをソロ に提出する。
List- beans;
//add Item object to the list
server.addBens(beans)
注意:SolrServerを繰り返し使用すると性能が向上します。
Reading Data from Solr sorserverのインスタンスを取得する
ソウルセーバー=get SolrServer()
SolQueryを作成
SolQuery query=new SolQuery()
query.setQuery(*:*)
query.addSortField(「price」、SolQuery.ORDER.asc)
クエリ要求をサーバに送信する
Query Resonse rsp=server.query;
結果を取得します
SolrDcumentList docs=rsp.gets Results()
javabeanで結果を取得するには、このjavabeanは前の例のようにjavaコメントが必要です。
List- beans=rsp.getBens(Item.class)
高級な使い方
sorJはAPIのセットを提供しています。クエリーの作成を手伝ってくれます。以下はfaceted queryの例です。
ソウルセーバー=get SolrServer()
SolQuery sorQuery=new SolQuery()
setQuery(「ipod」)
set Facet(true)
set Facet MinCount(1)
set Facet Limit(8)
addFacetField(「category」)
addFacetField(「inStock」)
Query Response rsp=server.query(sorQuery)
すべてのsetter/add方法は自分の実例を返します。だからあなたが見ているように、上の使い方はチェーン式です。
日本語:http://wiki.chenlb.com/solr/doku.php?id=solrj
Solrは独立した企業級検索アプリケーションサーバであり、それはWeb-serviceと似たAPIインターフェースを提供している。ユーザーはhttp要求を通じて、検索エンジンサーバに一定のフォーマットのXMLファイルを提出し、インデックスを生成することができます。Http G Solret操作により検索要求を提出し、XML形式の戻り結果を得ることもできる。
Solrjは、SolrのJavaクライアントにアクセスし、Solrインデックスを追加、更新、および照会するインターフェースを提供する。
Commons Http SolServer
Commons HttpSolrServerはHTTPClientを使ってsorサーバと通信しています。
String url="http://localhost:8983/solr";
SolServer server=new Commons HttpSolrServer;
Commons HttpSolrServerはスレッドセキュリティであり、Commons HttpSolrServerの例を繰り返し使用することを提案しています。
セッティングXMLResponseParsser
sorlr Jは現在、標準のフォーマットとしてバイナリのフォーマットを使用しています。ソロ1.2のユーザには、表示された設定によってXMLフォーマットが使用される。
server.set Parsser(new XMLResonseParsser();
Changing other Connection Settings
Commons Http SorlrServerはリンク属性の設定を許可します。
String url="http://localhost:8983/solr「
Commons Http SolrServer=new Commons Http SolrServer;
server.set SoTimeout(1000)//socket read timeout
server.set Connection Timeout(100)
server.set Default MaxConnection PerHost(100)
server.set MaxTotal Connection(100)
server.set Follow Redirects(false)//defaults to false
//allowCommpression defaults to false.
//Server side must support gzip or deflate for this to have any effect.
server.set AllowCompration(true)
server.setMaxRetries(1)//defaults to 0.>>1 not recommanded.
EmboddedSolServer
EmbodSorrServerはCommons Http SorlrServerと同じインターフェースを提供しています。http接続は必要ありません。
//注意、下の属性もjvmパラメータに設定できます。
System.set Property(「sor.sor.home」、「/home/sharlinsmanner/work/Obranch-1.3/example/sour」);
CoreCoreContiner.Initializer=new CoreCoreContiner.Initializer()
CoreContiner coreContiner=initializer.initialize()
EmbodedSolrServer=new EmbodSolrServer;
Multicare特性を使いたいなら、このように使ってもいいです。
File home=new File(getSolrHome);
File f=new File(home,「sor.xml」);
multicare.load(getSolHome(),f);
EmboddedSolrServer=new EmbodSolrServer(multicare);
あなたがプロジェクトにsorサービスを組み込むなら、それはいい選択です。httpを使ってもいいですか?同じインターフェースを提供します。
使い方
ソロjは、要求をソロサーバに提出し、応答を受信するための拡張可能なフレームワークとして設計される。
私たちはすでに最も一般的ないくつかのコマンドをsorServerクラスに封入しました。
Adding Data to Solr
//the instance can be reused
return new Commons Http SolServer()
)
//the instance can be reused
return new EmbodSolServer()
)
server.deleteByQuery(「*」)//delete everrything
SolrInput Dock doc 1=new SolrInput Dockment()
doc 1.addField(「id」、「id 1」、1.0 f)
doc 1.addField(「name」、「doc 1」、1.0 f)
doc 1.addField(「price」、10)
doc 2.addField(「id」、「id 2」、1.0 f)
doc 2.addField(「name」、「doc 2」、1.0 f)
doc 2.addField(「price」、20)
Collection<SolInput Dcument>docs=new ArayList<SolrInput Dcument>();
docs.add(doc 1)
docs.add(doc 2)
server.add(docs)
server.co mmit()
req.setAction(UpdateRequest.ACT ION.COMMIT、false、false);
req.add(docs)
UpdateResonse rsp=req.process;
Streaming documents for an udate
多くの場合、Streaming UpdateSolrServerも有用です。もしあなたが使うのがsor 1.4以上のバージョンなら、下のコードが使えるかもしれません。下記のような方法は使いやすいです。特にサーバーにデータを提出する時に。
..
CommonsHttpSolrServer server = new CommonsHttpSolrServer();
Iterator<SolrInputDocument> iter = new Iterator<SolrInputDocument>(){
public boolean hasNext() {
boolean result ;
// set the result to true false to say if you have more documensts
return result;
}
public SolrInputDocument next() {
SolrInputDocument result = null;
// construct a new document here and set it to result
return result;
}
};
server.add(iter);
you may also use the addBens beansIter)method to write pojos
Directly adding POJOs to Solr
public class Item{
@Field
String id
@Field(「cat」)
String[]categories;
@Field
List
)
@Field(「cat」)
public void set Category(String[]c){
this.categories=c
)
ここでは相対的な、getメソッド(java注釈が付けられていない)が属性を読み取ります。
Item item=new Item()
item.id=「one」
item.categories=new String[]{aaa]、「bb」、「ccc」;
List
//add Item object to the list
server.addBens(beans)
注意:SolrServerを繰り返し使用すると性能が向上します。
Reading Data from Solr
ソウルセーバー=get SolrServer()
SolQuery query=new SolQuery()
query.setQuery(*:*)
query.addSortField(「price」、SolQuery.ORDER.asc)
Query Resonse rsp=server.query;
SolrDcumentList docs=rsp.gets Results()
List
sorJはAPIのセットを提供しています。クエリーの作成を手伝ってくれます。以下はfaceted queryの例です。
ソウルセーバー=get SolrServer()
SolQuery sorQuery=new SolQuery()
setQuery(「ipod」)
set Facet(true)
set Facet MinCount(1)
set Facet Limit(8)
addFacetField(「category」)
addFacetField(「inStock」)
Query Response rsp=server.query(sorQuery)
すべてのsetter/add方法は自分の実例を返します。だからあなたが見ているように、上の使い方はチェーン式です。