我把solr看作是文档集合的搜索引擎,在这里我们事先不知道文档中数据项的类型。这个是可能的吗?好吧,这可能很清楚,就像泥一样,下面是一个例子。
用户可以动态创建文档类型。因此,他们可能会为具有字段名(文本字符串)、年龄(非负数)和性别(布尔值)的人创建文档类型。另一个用户可能会用make (文本字符串)、enginesize (非负数)和neworused (布尔值)为cars创建另一个文档类型。
我们可以使用whoosh ( python搜索引擎)来处理这个问题,方法是为每个文档类型创建一个单独的whoosh模式,因此我们将为第一个文档类型提供一个模式,指定要索引的字段和相应的whoosh数据类型(当不再需要该模式时,我们可以销毁它)。
我能和solr做这样的事吗?顺便说一句,将schema.xml更改为添加新的字段类型不是一种选择:文档类型是完全动态的,它们的字段在创建后可能会更改,并且可能会有成千上万的字段。
希望这有意义!这可能是完全微不足道的,所以请接受索尔诺布的道歉。
发布于 2015-09-17 20:18:31
这已经支持了很长一段时间,在Solr的动态字段。实际上,如果您查看示例(例如技术产品),您将看到_s、_ss等动态字段定义。
因此,您只需将字段命名为后缀(或前缀),以指示类型,并且它只起作用。
下一个问题是搜索哪些字段。例如,模式是通过将所有这些复制到泛型字段并使用它们来完成的,但是它不那么灵活。
您可能希望使用eDisMax并显式地指定字段列表。或者,使用最近的- 配置API动态保存这些字段列表。
发布于 2015-09-17 09:43:29
如果我在您的位置,我可能已经使用了solr的模式。在这种情况下,除了id (可选)和版本字段之外,您不需要为文档提供完整的架构。您需要在ManagedIndexSchemaFactory中使用schemaFactory作为solrconfig.xml。这将在文档被索引时继续将字段添加到schema.xml中。您需要在requestHandler中的/update solrconfig.xml中包含其他更新链。使用下面的资源获取更多信息。
https://stackoverflow.com/questions/32619350
复制相似问题