【发布时间】:2019-11-27 22:00:49
【问题描述】:
假设您有一个简单的表单自动化应用程序,并且您想要索引 Solr 集合中每个提交的表单。假设表单内容是开放式的,因此用户可以在表单上创建自定义字段等等。
由于用户可以定义自定义表单,因此您无法真正为 Solr 预定义字段,因此我们一直在使用 Solr 的“无模式”或托管模式模式。它工作得很好,除了一个问题。
假设一个表单带有一个名为“ID”的字段和一个值为“9”的字段。如果这是 Solr 第一次看到一个名为“ID”的字段,它会尽职地更新它的模式,并且由于该字段的值是数字,Solr 为其分配一个数字数据类型的数据类型(我们看到“plong “ 很多)。
现在,假设第二天,有人提交了相同表单的另一个实例,但在 ID 字段中,他们输入了自己的姓名,而不是输入数字。 Solr 将其吐出并且不会索引此记录,因为架构说 ID 应该是数字,但在此记录上,它不是。
到目前为止,我们处理这个问题的方法是捕获当字段的数据类型与架构不一致时我们得到的异常,然后我们使用 Solr API 来更改架构,使有问题的字段成为文本或字符串而不是数字。
当然,当我们这样做时,我们需要重新索引整个集合,因为架构发生了变化,因此我们需要保留所有原始数据,以防万一我们需要在这些架构数据之一之后重新索引所有内容 -类型冲突。我们是 Solr 的忠实粉丝,但与此同时,我们想知道使用搜索引擎的好处是否超过了用户只需在以前的数字字段中输入字符数据而触发的所有这些额外工作。
有没有办法让 Solr 总是为每个字段分配类似“text_general”的东西,或者还有其他更好的方法吗?
【问题讨论】:
标签: solr