Xml 如何使用单个solr实例或solr模板字段索引和搜索同一数据源中的两个不同表,但这些字段不能正常工作
我想索引和搜索两个不同的实体 文件名:db data config.xmlXml 如何使用单个solr实例或solr模板字段索引和搜索同一数据源中的两个不同表,但这些字段不能正常工作,xml,solr,indexing,dataimporthandler,data-import,Xml,Solr,Indexing,Dataimporthandler,Data Import,我想索引和搜索两个不同的实体 文件名:db data config.xml <dataConfig> <dataSource name="myindex" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://test-pc:1433;DatabaseName=SampleDB" user="username" password="password" /> &
<dataConfig>
<dataSource name="myindex" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://test-pc:1433;DatabaseName=SampleDB" user="username" password="password" />
<document>
<entity name="Employees" query="select * from employee" transformer="TemplateTransformer" dataSource="myindex">
<field column="id" name="singlekey" />
<field column="eId" name="eid" />
<field column="eName" name="ename" />
<field column="entity" template="Employee" name="entity" />
</entity>
<entity name="Products" query="select * from products" transformer="TemplateTransformer" dataSource="myindex">
<field column="id" name="singlekey" />
<field column="pId" name="pid" />
<field column="pName" name="pname" />
<field column="entity" template="Product" name="entity" />
</entity>
</document>
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="db" version="1.1">
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
</types>
<fields>
<!-- Employee -->
<field name="eid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="ename" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!-- Products -->
<field name="pid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="pname" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!--Common fields-->
<field name="entity" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="singlekey" type="string" indexed="true" stored="true" required="true" multiValued="false" />
</fields>
<uniqueKey>singlekey</uniqueKey>
</schema>
文件名:schema.xml
<dataConfig>
<dataSource name="myindex" driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://test-pc:1433;DatabaseName=SampleDB" user="username" password="password" />
<document>
<entity name="Employees" query="select * from employee" transformer="TemplateTransformer" dataSource="myindex">
<field column="id" name="singlekey" />
<field column="eId" name="eid" />
<field column="eName" name="ename" />
<field column="entity" template="Employee" name="entity" />
</entity>
<entity name="Products" query="select * from products" transformer="TemplateTransformer" dataSource="myindex">
<field column="id" name="singlekey" />
<field column="pId" name="pid" />
<field column="pName" name="pname" />
<field column="entity" template="Product" name="entity" />
</entity>
</document>
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="db" version="1.1">
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
</types>
<fields>
<!-- Employee -->
<field name="eid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="ename" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!-- Products -->
<field name="pid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="pname" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!--Common fields-->
<field name="entity" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="singlekey" type="string" indexed="true" stored="true" required="true" multiValued="false" />
</fields>
<uniqueKey>singlekey</uniqueKey>
</schema>
单键
请参见以下链接:这个问题可以通过使用静态字段(添加新字段-这里是它的“实体”)来解决。 但我看到,在添加第二个实体之后,它甚至不能索引数据 如下图所示 它能够从sql server数据库中获取10条记录,但索引0行,这意味着没有执行索引过程。 所以连搜索都不能。 谁能解决这个问题?
提前感谢。您是否尝试过从管理屏幕中单独索引您的实体
http://<hostname>:<portnum>/solr
http://:/solr
架构中的所有字段都具有
required="true".
您告诉Solr,每个实体的结果都需要包含所有的eid、ename、pid、pname、entity和singlekey字段
Employee没有pid或pname字段,因此不需要pid和pname。同样,产品没有eid或ename字段,因此不需要eid和ename
移除
required="true".
从pid、pname、eid和ename将允许您索引。此问题的任何解决方法???谢谢,您是对的,这是不索引数据的唯一根本原因。(y)