SOLR 3.1索引问题

SOLR 3.1索引问题,solr,Solr,我们在SOLR搜索方面面临一些问题 我们在Jetty中使用SOLR 3.1。我们已经根据我们的要求设置了方案。我们已设置data-config.xml,以便将记录从数据库Sql Server 2005导入到集合核心。 数据库中有32万条记录需要导入 完成导入后,当我尝试通过SOLR admin搜索所有记录时 它告诉我找到的总数是29万。因此,30000条记录丢失了 现在我想到了以下问题 我怎么知道哪个记录没有正确索引?或者哪个记录丢失了?为了知道这一点,我尝试了一个技巧,我想我应该在数据库中放置

我们在SOLR搜索方面面临一些问题

我们在Jetty中使用SOLR 3.1。我们已经根据我们的要求设置了方案。我们已设置data-config.xml,以便将记录从数据库Sql Server 2005导入到集合核心。 数据库中有32万条记录需要导入

完成导入后,当我尝试通过SOLR admin搜索所有记录时

它告诉我找到的总数是29万。因此,30000条记录丢失了

现在我想到了以下问题

我怎么知道哪个记录没有正确索引?或者哪个记录丢失了?为了知道这一点,我尝试了一个技巧,我想我应该在数据库中放置一个字段,以知道哪个记录导入了SOLR集合,而哪个没有导入。但最大的问题是,在从data-config.xml导入时,如何更新此数据库字段。因为标记只允许您搜索查询,或者换句话说,返回某些内容。所以,我有了另一个想法,仍然要更新数据库字段。我在数据库中创建了一个存储过程,其中包含更新查询,该查询将更新数据库中的字段,然后我选择查询,该查询只需返回1条记录即可满足要求。但当我试图用它运行DIH时,它返回的索引失败了。回滚所有更改错误消息,不导入任何内容。当我将更新查询注释到存储过程中时,它就工作了。所以它不允许我运行更新查询,即使它是从存储过程运行的。所以我非常努力地想找到一种从DIH更新数据库的方法。但我真的找不到任何悲伤的微笑,我拒绝了这个想法,以更新数据库

我清除了索引并再次开始导入数据。这次我尝试手动运行solr admin导入页面,每转5000条记录。最后,对于一些如何记录仍然丢失

这是否可能是因为未正确提交。我在导入页面的文档中输入了红色http://localhost:8983/solr/Collection_201/dataimport?command=full-import&clean=false自动提交导入的数据。但我个人注意到有时会,有时不会。所以这真的让我疯狂悲伤的微笑

现在我非常沮丧,开始思考我使用SOLR的方式是否正确。如果我是对的,那么它可靠吗????如果我错了,请指导我我的错误是什么


请指导我如何轻松地同步。收集到我们的数据库中,并确保它100%同步。

您在Solr和数据库中使用的ID字段是什么?id字段必须是唯一的,因此,如果有30000条记录与其他30000条记录具有相同的id,则数据将覆盖这些记录

此外,当您运行数据导入处理程序时,您可以查询它的status?command=status,这将告诉您上次运行时导入的记录总数


我要做的第一件事是通过solr id字段检查数据库中的非唯一id。

还要注意,当批中的一条记录出错时,整个批将回滚。所以,如果它发生了3次,并且你为每个文档编制了10000个索引,这就可以解释它了

当时,我解决了这个问题:

但应该有比这更好/更优雅的解决方案。我不知道怎样才能找到你失踪的记录。但是,如果您已经为ID编制了索引,那么您可以将索引ID与外部源进行比较,并获得间隙