Solrインクリメンタルまたはフルインデックスのリアルタイム作成
4019 ワード
1、インクリメンタルインデックス作成をサポートするために、上記のmysql-data-configを必要とする.xmlコンテンツを
2.上記の文の最後のExecuteでは、firebugまたは他のデバッグプラグインを使用して実際の要求のアドレスを取得します(不要なパラメータがいくつか削除されています):
インクリメンタルインデックスリンク
フル構築インデックスリンク
3,アドレスがあればsolrj呼び出し方法をまとめるのは難しくない:
4、必要な場所、例えば文章の公開、修正後に待機呼び出しを削除すればいいです.
実はこの方法はSolrJの対像を使わないで、httpclient甚だしきに至ってはjavaを使います.net.URLはすべて可能で、urlにアクセスできればいいです.
関連説明:
主な原理:利用率はimportを行うたびにsolr.にあります.ホームのconfの下で生成するdataimport.propertiesファイル、このファイルには最近インポートした関連情報があります.例えば、私のファイルの場所は
私のファイルの内容は
last_index_timeは、データベース・テーブルのupdate_と比較して、最近のインクリメンタルまたはフルインデックスの時間です.time列には、後で変更または追加されたものが表示されます.
data-config.xmlの説明: queryは、すべてのデータを取得するSQL である deltaImportQueryはインクリメンタルデータ取得時に使用するSQL deltaQueryは、プライマリ・キーを取得するSQL です.
パラメータの説明: clean:インデックスを作成する前に前のインデックスを削除するかどうかを設定します. commit:インデックス作成後に自動的にコミットされるかどうかを設定します. entity:mysql-data-config.xml entity nameで構成された名前で、複数が付いていて、ここで指定しない場合、すべてのentityが実行されます. optimize:インデックス作成後に自動的に最適化されるかどうかを設定します.
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/basic" user="root" password="123"/>
<document>
<entity name="article" transformer="HTMLStripTransformer"
query="SELECT id, title, content FROM article"
deltaImportQuery="SELECT id, title, content FROM article
WHERE id='${dataimporter.delta.id}'"
deltaQuery="SELECT id FROM article
WHERE update_time > '${dataimporter.last_index_time}'">
<field column="id" name="id" />
<field column="title" name="title" />
<field column="content" name="content" stripHTML="true" />
</entity>
</document>
</dataConfig>
2.上記の文の最後のExecuteでは、firebugまたは他のデバッグプラグインを使用して実際の要求のアドレスを取得します(不要なパラメータがいくつか削除されています):
インクリメンタルインデックスリンク
http://localhost:8983/solr/collection1/dataimport?command=delta-import&clean=false&commit=true&entity=article&optimize=false
フル構築インデックスリンク
http://localhost:8983/solr/collection1/dataimport?command=full-import&clean=true&commit=true&optimize=true
3,アドレスがあればsolrj呼び出し方法をまとめるのは難しくない:
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import base.util.ConfigUtil;
public class SolrService {
private static Logger log = Logger.getLogger(SolrService.class);
private static HttpSolrServer solrServer;
static {
solrServer = new HttpSolrServer(ConfigUtil.getValue("solr.url"));
solrServer.setConnectionTimeout(5000);
}
/**
* / 。
*
* @param delta ture, ;false,
*/
public static void buildIndex(boolean delta) {
SolrQuery query = new SolrQuery();
// RequestHandler, /select
query.setRequestHandler("/dataimport");
String command = delta ? "delta-import" : "full-import";
String clean = delta ? "false" : "true";
String optimize = delta ? "false" : "true";
query.setParam("command", command)
.setParam("clean", clean)
.setParam("commit", "true")
.setParam("entity", "article")
.setParam("optimize", optimize);
try {
solrServer.query(query);
} catch (SolrServerException e) {
log.error(" ,delta:" + delta, e);
}
}
}
4、必要な場所、例えば文章の公開、修正後に待機呼び出しを削除すればいいです.
実はこの方法はSolrJの対像を使わないで、httpclient甚だしきに至ってはjavaを使います.net.URLはすべて可能で、urlにアクセスできればいいです.
関連説明:
主な原理:利用率はimportを行うたびにsolr.にあります.ホームのconfの下で生成するdataimport.propertiesファイル、このファイルには最近インポートした関連情報があります.例えば、私のファイルの場所は
/root/solr-4.5.1/example/solr/collection1/conf
私のファイルの内容は
#Mon Dec 09 14:06:03 CST 2013
last_index_time=2013-12-09 14\:06\:00
article.last_index_time=2013-12-09 14\:06\:00
last_index_timeは、データベース・テーブルのupdate_と比較して、最近のインクリメンタルまたはフルインデックスの時間です.time列には、後で変更または追加されたものが表示されます.
data-config.xmlの説明:
パラメータの説明: