TomCat-Servlet に Solr サーバーをセットアップしました。私のインデックスには、いくつかのフィールドを持つ約 610.000 ドキュメントがあります。私のschema.xml:
<field name="ID" type="myText" indexed="true" stored="true" required="true" />
<field name="text" type="myText" indexed="true" stored="false" multiValued="true" />
<dynamicField name="AT*" type="text_general" indexed="true" stored="true" multiValued="true" />
特定の文字列 (別のシステムからのものである可能性があります) でインデックスを検索するには、小さな JavaProgram を作成しました
class SolrjTest
{
public static void main(String[] args) throws IOException
{
SolrjTest solrj = new SolrjTest();
solrj.query(args[0]);
}
public void query(String q) throws IOException
{
CommonsHttpSolrServer server = null;
String uuid = null;
boolean flag = true;
while(flag==true)
{
uuid = UUID.randomUUID().toString();
File f = new File("E:/dw-solr/tomcat-solr/bin/solr/data/SearchResult/"+uuid+".txt");
if(!f.exists()){
flag = false;
}
}
try
{
server = new CommonsHttpSolrServer("http://localhost:8080/solr");
}
catch(Exception e)
{
e.printStackTrace();
}
SolrQuery query = new SolrQuery();
query.setQuery(q);
FileWriter fw = new FileWriter("E:/dw-solr/tomcat-solr/bin/solr/data/SearchResult/"+uuid+".txt");
try
{
QueryResponse qr = server.query(query);
SolrDocumentList sdl = qr.getResults();
Object[] o = new Object[sdl.size()];
o = sdl.toArray();
for (int i = 0; i < o.length; i++) {
System.out.println(o[i].toString());
fw.write(o[i].toString() + "\n");
}
fw.flush();
fw.close();
System.out.println("finished");
}
catch (SolrServerException e)
{
e.printStackTrace();
}
}
そして結果はファイルに保存されます。問題は、データの形式が非常に奇妙であることです。次のようになります。
"SolrDocument[{ID=0000000, AT_anyName=[anyValue, multiValue, justMoreValue], AT_anyName2=[Normal,Normal, Normal], AT_mightbeanothername=[couldbealoooooooooooooooongvalue, andanotherone, andanotherone]muchMoreStuff... 約 20 - ID ごとに異なる場合があります}]"
私が望んでいるのは、このデータの明確な XML 形式です。そのため、それを XML ファイルとして保存し、他のシステムに送り返します。問題は、メソッド SolrDocumentList sdl = qr.getResults(); です。上記のように結果を返します。前に投稿したように、私は dynamicFields を持っているので、物事は本当に複雑になります (少なくとも私にとっては :-/ )。フォーマットをプレーンでクリアな XML フォーマットに変更する方法はありますか?
助けてくれてありがとう。
よろしくお願いします