这里记录一下自己的思路。
我在同一个core里面如果不是嵌套的Entity就总是导入不进去数据,processed=0,不知道是哪里出了问题,网上关于这部分的资料较少,如果有知道的可以看下是怎么回事呀。
我的思路是按照我的博客中另一篇新建一个core,设置一下配置文件, 博客直达连接https://blog.csdn.net/weixin_44078713/article/details/107063744 Java项目中设置选择哪个core就对哪个core进行处理。
下面展示一些 关键代码。
HttpSolrClient solrServer = new HttpSolrClient.Builder(SOLR_URL + "shuyu/").withConnectionTimeout(10000) .withSocketTimeout(60000).build();solr在java以及idea项目中具体如何使用参考我的另一篇博客,不再赘述。
标签的name属性,该属性用来区分不同的entity,所以不能和其他的entity标签的name相同。 关联表就可以使用嵌套entity,根据自己的逻辑关系设计。以下展示,两个entity的query即是设计相互关联的逻辑关系处。
<document> <entity name="biaozhun" dataSource="biaozhun" query="select * from biaozhun" pk="id"> <field column="id" name="id" /> <field column="title_t" name="title_t" /> <field column="encdoing" name="encdoing" /> <field column="Professional_category" name="Professional_category" /> <field column="Functional_sequence" name="Functional_sequence" /> <field column="Release_date" name="Release_date" /> <field column="Implementation_date" name="Implementation_date" /> <entity name="shuyu" query="select id,term, Engname,Def from shuyu"> <field column="id" name="id" /> <field column="term" name="term" /> <field column="Engname" name="Engname" /> <field column="Def" name="Def" /> </entity> </entity> </document>如果两张表不在一个数据库,可以配置多个dataSource,同时对这两张表创建索引,只需要将表和数据源对应上就可以了,如上图第一个entity样式。 managed-schema文件,如果是两个Entity都有的属性,就不用重复添加,如:id。
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="encdoing" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="Professional_category" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="Functional_sequence" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="Release_date" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="Implementation_date" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="term" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="Engname" type="string" multiValued="false" indexed="true" required="true" stored="true"/> <field name="Def" type="string" multiValued="false" indexed="true" required="true" stored="true"/>官方文档建议大家看看,比较权威:https://cwiki.apache.org/confluence/display/solr/DataImportHandler
目前对这一块还在努力学习之中,随手记录下来一些心得和发现,以后可以借鉴~欢迎有同样方向的小伙伴一起探讨!