Java 如何编写可维护的Solr代码?
在我们的项目中,我们有一个solr模式,它的值具有多个几乎重复的字段。我的意思是,我们有一个示例字段field,我们在solr中存储为field、field\u w和field\u l,它们在搜索中都有不同的增强因子(动态类型不是_w或_l而是类似的) 因此,我们有一个模型,我们通过自定义代码将其映射到SolrSchemaModel,然后将其存储在Solr中。当我们阅读Solr时,我们会阅读SolrDocumentList(不是SolrSchemaModel,因为它有嵌入的文档,这些文档在阅读时映射到\uuuuuu childDocuments\uuuuu),并构建模型搜索响应(不是模型,因为它缺少字段) 正如您所看到的,每当我们想要向模型添加字段时,这将导致大量的维护,如果我们想要更改模式,我们还需要更改SolrSchemaModel以及与之之间的所有代码映射 其他人是如何使用Solr处理持久性的?其中一个想法是将类的JSON序列化为Solr字段,这样每当模式或模型发生变化时,只要序列化/反序列化保持不变,写入就会发生变化。另一个人建议不使用Solr作为持久性,只使用一些单独的东西(我猜这意味着在返回结果之前执行搜索之后在另一个数据库上执行读取)Java 如何编写可维护的Solr代码?,java,solr,solrj,Java,Solr,Solrj,在我们的项目中,我们有一个solr模式,它的值具有多个几乎重复的字段。我的意思是,我们有一个示例字段field,我们在solr中存储为field、field\u w和field\u l,它们在搜索中都有不同的增强因子(动态类型不是_w或_l而是类似的) 因此,我们有一个模型,我们通过自定义代码将其映射到SolrSchemaModel,然后将其存储在Solr中。当我们阅读Solr时,我们会阅读SolrDocumentList(不是SolrSchemaModel,因为它有嵌入的文档,这些文档在阅读时
人们是如何解决这个问题的?如果相关的话,将Java 8与SolrJ一起使用。这里有几点:
我们将序列化的JSON保存在solr中,并在返回时反序列化它们。我明白了,如果你没有一份大文件就可以了。所以,当你写信给solr时,你存储了所有可搜索的字段,而在阅读时,你只阅读了一个字段,对吗?谢谢,这正是我想要的答案。我不知道复制字段:-)所有的例子都有。如果您阅读schema.xml,它会显示您可以学习的所有有趣的东西(例如dynamicField*,注释掉)。您只需要给它一些时间,因为随着时间的推移,这些示例已经变得越来越大。