2017-08-04 77 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 :) 
    } 
}