2017-03-16 121 views
0

我是Solr的新手,我试图了解其在重新索引过程中的行为。 我有一个批处理进程运行,从关系表中选择数据并将其添加到Solr索引。Solr重新索引行为

从我的理解阅读有关Solr的,有两种情况,当你需要做一个重新索引

案例1:当新行被插入到你的表(源数据) 案例2:当任何列类型发生变化,您必须相应地更改模式。

在案例1中旧数据是否保持可供用户在重新索引发生时进行搜索?

模式更改过程中发生了什么,因为旧数据将不再与新模式匹配?什么样的行为,当他们执行搜索将用户体验?

我在网上找不到任何明确的答案。任何澄清表示赞赏。

回答

0

案例1. Solr的标记文档删除,但它停留在指数,它增加了同一份文件ID的新文档。所以,是的,直到新文档提交之前数据才可用。案例2.如果您更新架构,旧数据中的文件仍然可用,但任何已删除的字段都将不可见,并且任何新字段都将丢失。如果你仔细想一想,索引字段只是一系列的标记,所以这些字段仍然是可搜索的,但是新的查询分析和索引中的标记可能会出现令人惊讶的结果,评分也可能受到影响。基本上你的结果可能不一致。

举个例子:假设你就一个字做一个语音过滤:福克斯和它产生的标记:FUX | foks在您的索引中。

然后您删除拼音过滤器并键入fox - 将不会与您的索引中的内容匹配。

说你有另一场与波特施特默尔:索引术语被朵朵到:指数

您删除PorterStemmer:指数仍将匹配,索引不会。

+0

对于案例2,如果该特定字段的类型由于模式更改而发生更改,并且该字段设置为在搜索结果中显示...结果将返回null,或者根本不返回该字段。 – vish

+0

这取决于字段类型。将基本类型从一个字符串改成一个整数会给你一个错误:SCHEMA-INDEX-MISMATCH。从字符串更改分析的一种方法,以不同的东西还是会拉字符串值回来,因为基本型是一样的。 –

+0

谢谢!说得通。 – vish