16

solr-indexer アプリケーションのいくつかのテストをコーディングしています。テストのベスト プラクティスに従って、自己依存型のコードを記述し、インデックス作成と検索のテスト用に and をロードして一時的なデータ ツリーを作成しschema.xmlたいと考えています。solrconfig.xmlアプリケーションはほとんど Java で書かれているため、SolrJ ライブラリを扱っていますが、問題が発生しています (まあ、corecontainers-coredescriptor-coreconfig-solrcore の世界で迷子になっています ...) 誰でもここにいくつかの構成をロードし、パラメータが渡されたデータディレクトリにも書き込む組み込みサーバーを作成するコード?

4

3 に答える 3

12

AbstractSolrTestCaseを拡張するSolrExampleTestBaseを拡張するSolrExampleTestsから始めることができます。

また、このSampleTest

また、これこのスレッドを見てください。

于 2009-06-01T23:23:20.017 に答える
7

これは単純なテスト ケースの例です。solr は、solr 構成ファイルを含むディレクトリーです。

import java.io.IOException;
org.apache.solr.client.solrj.embedded.EmbeddedSolrServer をインポートします。
org.apache.solr.util.AbstractSolrTestCase をインポートします。
org.apache.solr.client.solrj.SolrQuery をインポートします。
org.apache.solr.client.solrj.SolrServer をインポートします。
org.apache.solr.client.solrj.SolrServerException をインポートします。
org.apache.solr.client.solrj.response.QueryResponse をインポートします。
org.apache.solr.common.SolrInputDocument をインポートします。
org.apache.solr.common.params.SolrParams をインポートします。
org.junit.Before をインポートします。
org.junit.Test をインポートします。

import static org.junit.Assert.assertEquals;

public class SolrSearchConfigTest extends AbstractSolrTestCase {

    プライベート SolrServer サーバー。

    @オーバーライド
    public String getSchemaFile() {
        「solr/conf/schema.xml」を返します。
    }

    @オーバーライド
    public String getSolrConfigFile() {
        「solr/conf/solrconfig.xml」を返します。
    }

    @前
    @オーバーライド
    public void setUp() は例外をスローします {
        super.setUp();
        サーバー = 新しい EmbeddedSolrServer(h.getCoreContainer(), h.getCore().getName());
    }

    @テスト
    public void testThatNoResultsAreReturned() は SolrServerException をスローします {
        SolrParams params = new SolrQuery("見つからないテキスト");
        QueryResponse レスポンス = server.query(params);
        assertEquals(0L, response.getResults().getNumFound());
    }

    @テスト
    public void testThatDocumentIsFound() は、SolrServerException、IOException をスローします {
        SolrInputDocument ドキュメント = 新しい SolrInputDocument();
        document.addField("id", "1");
        document.addField("名前", "私の名前");

        server.add(ドキュメント);
        server.commit();

        SolrParams params = new SolrQuery("名前");
        QueryResponse レスポンス = server.query(params);
        assertEquals(1L, response.getResults().getNumFound());
        assertEquals("1", response.getResults().get(0).get("id"));
    }
}

詳細については、このブログ投稿を参照してください: Solr 統合テスト

于 2011-03-05T08:25:46.623 に答える
5

最初に、solr.xml を含む Solr ホーム ディレクトリと、solrconfig.xml、schema.xml などを含む conf フォルダーを設定する必要があります。

その後、この単純で基本的なコードを Solrj に使用できます。

File solrHome = new File("Your/Solr/Home/Dir/");
File configFile = new File(solrHome, "solr.xml");
CoreContainer coreContainer = new CoreContainer(solrHome.toString(), configFile);
SolrServer solrServer = new EmbeddedSolrServer(coreContainer, "Your-Core-Name-in-solr.xml");
SolrQuery query = new SolrQuery("Your Solr Query");
QueryResponse rsp = solrServer.query(query);
SolrDocumentList docs = rsp.getResults();
Iterator<SolrDocument> i = docs.iterator();
while (i.hasNext()) {
      System.out.println(i.next().toString());
}

これが役立つことを願っています。

于 2012-08-22T10:38:57.203 に答える