2017-08-04 62 views
0

我寫了一個搜索組件用於SOLR。我想調試它。我嘗試使用eclipse的遠程調試功能調試SOLR本身,但它不適用於插件並顯示未找到源。如何調試Solr插件?

然後我嘗試了包括我的插件項目作爲源項目,但也沒有工作。調試器不會停止插件的斷點。

在這方面的任何幫助將不勝感激!

+0

你運行包含調試信息插件構建Solr的實例?您是否嘗試在eclipse中手動將源代碼附加到遠程調試啓動配置的類路徑中? – SpaceTrucker

+0

我對此很陌生。你能否詳細說明如何做到這一點? – wasimbhalli

回答

0

您可以使用嵌入式solr在您的eclipse項目中編寫Junit測試。這使調試更容易。您只需要在您的測試資源目錄中爲solr-core創建配置文件(solrconfig.xml,schema.xml等;您可以將solr core目錄從solr安裝中複製)並指向CoreContainer到該目錄。此核心容器可用於獲取配置的solr核心和搜索器。 JUnit和Solr-core是所需的依賴關係。

下面是測試代碼的例子:

/** 
* This is a starting point for testing the component with embedded solr! 
*/ 
public class SearchComponentTest 
{ 
    private static CoreContainer container; 
    private static SolrCore core; 

    private static final Logger logger = LoggerFactory.getLogger(DataImportRequestHandlerTest.class.getName()); 

    /* 
    * PREPARE AND TEAR DOWN FOR TESTS 
    */ 
    @BeforeClass 
    public static void prepareClass() throws Exception 
    { 
     // create the coreContainer from conf dir in test resources 
     container = new CoreContainer(
      DataImportRequestHandlerTest.class.getResource("/solrDir").getPath().substring(1)); 
     container.load(); 
     core = container.getCore("CORENAME"); 
     logger.info("Solr core loaded!"); 
    } 

    @AfterClass 
    public static void cleanUpClass() 
    { 
     core.close(); 
     container.shutdown(); 
     logger.info("Solr core shut down!"); 
    } 

    /* TESTS TO RUN */ 

    /** 
    * Test the search component here or just trigger it to debug 
    */ 
    @Test 
    public void testSearchComponent() 
    { 
     /* PREPARE */ 
     SearchComponent mySearchComp = core.getSearchComponent("componentNameFromSolrConf"); 

     /* RUN */ 
     // do something with your search component 

     /* CHECK */ 
     // check results with asserts :) 
    } 
}