Solr数据导入处理程序(DIH)无法从MySQL视图中索引所有记录。

问题描述 投票:0回答:1

我在MySQL DB中有一个View,并使用DIH构建了一个Solr索引的POC。在我的直接选择查询中,有6条记录,但Solr查询只返回了4条(尽管它确实说它已经获取了6条记录)。

MySql视图

CREATE VIEW FORUMS_SURVEYS AS
SELECT F.TITLE, F.DESCRIPTION, F.CREATED, FC.TYPE, FC.SUBTYPE FROM FORUM F JOIN FORUM_CATEGORY FC ON F.FORUM_CATEGORY_ID=FC.ID
UNION ALL
SELECT S.TITLE, S.DESCRIPTION, S.DATED AS CREATED, "" AS TYPE, "" AS SUBTYPE FROM SURVEY S; 

从 "视图 "中选择

select * from FORUMS_SURVEYS;

Result - Fetched Rows: 6 (as expected)

在Solr上运行DIH,具体操作如下

db-data-config.xml

<dataConfig>
    <dataSource driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/bjm" user="<user>" password="<password>" />
    <document>
       <entity name="forums_surveys" query="SELECT * FROM forums_surveys" transformer="HTMLStripTransformer">
            <field column="TITLE" name="title" indexed="true" type="text" />
            <field column="DESCRIPTION" name="description" indexed="true" type="text" stripHTML="true"/>
            <field column="CREATED" name="created" indexed="true" type="text" />
            <field column="TYPE" name="type" indexed="true" type="text" />
            <field column="SUBTYPE" name="subtype" indexed="true" type="text" />
        </entity>
    </document>
</dataConfig>

在用户界面管理上,DataImport的结果是

Last Update: 16:13:12

(Duration: 01s)
Requests: 1 1/s, Fetched: 6 6/s, Skipped: 0 , Processed: 0 
Started: 42 minutes ago

再次,好看到文字 "取。6"

然而,当我从UI Admin中用query Params q=title:*查询结果时,事情就变得不愉快了(注意响应> numFound下面JSON中的字段)。

"responseHeader":{
    "status":0,
    "QTime":8,
    "params":{
      "q":"title:*",
      "_":"1587565922553"}},
  "response":{"numFound":4,"start":0,"docs":[
//removed the 4 records for brevity
]
solr dih
1个回答
0
投票

你需要有一个唯一字段,可以是id。这个唯一字段是需要保持solr的文档的唯一性。

这个 "唯一 "字段是需要保持solr文件的唯一性的。uniqueKey 元素指定哪个字段是文档的唯一标识符。虽然uniqueKey不是必需的,但您的应用程序设计几乎总是需要它。

例如: uniqueKey 如果您将更新索引中的文档,则应使用该字段。

你可以通过命名来定义唯一键字段。

<uniqueKey>id</uniqueKey>
© www.soinside.com 2019 - 2024. All rights reserved.