当前位置: 首页 > 知识库问答 >
问题:

如何编写可维护的Solr代码?

翟弘
2023-03-14

在我们的项目中,我们有一个solr模式,它的值带有多个几乎重复的字段。我的意思是我们有一个示例field field,我们在solr中存储为field、field_w和field_l,它们在搜索中都有不同的boost因子(动态类型不是_w或_l,而是类似的)。

其他人是如何使用Solr处理持久性的?有一个想法是将类的JSON序列化为Solr字段,这样,每当模式或模型发生变化时,写就会改变,序列化/反序列化保持不变。另一个人建议不要使用Solr作为持久化,只使用一些单独的东西(我想这意味着在返回结果之前执行搜索之后在另一个数据库上执行读操作)。

人们是如何解决这个问题的?如果相关的话,将Java8与SolrJ一起使用。

共有1个答案

潘哲
2023-03-14

这里有几件事:

  1. 如果要将字段复制到其他字段以进行不同的分析,则不需要存储其他字段,只需索引它们即可。因此,您只需要在Solr级别上复制它们,而不需要更改序列化模型。
  2. 处理不需要跟踪模式等价性的经典方法是在表示类型的名称中添加前缀或后缀的动态字段。因此,所有*_s字段都是字符串,所有*_d字段都是日期。您的映射器甚至可以自动添加后缀/取消后缀。这是大多数CMSs在与Solr对话时使用的。
  3. CopyField支持源字段和目标字段的通配符,因此您仍然可以结合上述技术。
 类似资料:
  • 这是出版于2013年的书。编写可维护的JavaScript的重要性不言而喻,特别对于团队工作来讲。统一规范的编码规范、严谨的编码风格,能在代码的维护时节约大量的人力成本。 基本的格式化 缩进层级:缩进层级到底采用制表符(tab)/2个空格/4个空格,都不重要,重要的是在一个团队中约定一种缩进风格。无关优劣,在这里风格统一最重要。另一个重要的点就是,切忌制表符和空格混用。 语句结尾:是否要分号结尾。

  • 问题内容: 我正在尝试为Linux编写Mono C#守护程序。 我想在它完成处理时开始和停止它,而不只是取消该过程。 有人有这个例子吗? 编辑:我想出了如何在debian中使用start-stop-daemon –background,所以我想现在就使用它。 编辑:我也在Java中实现这一点,他们有这个不错的addShutdownHook可以捕获终止应用程序。我需要花更多时间来整理单声道服务的依赖

  • 在早期的网站中,JavaScript 主要是用于小特效或者是表单验证。而今天的Web 应用则会有成千上万行JavaScript 代码,执行各种复杂的过程。这种演化让开发者必须得考虑到可维护性。除了秉承较传统理念的软件工程师外,还要雇佣JavaScript 开发人员为公司创造价值,而他们并非仅仅按时交付产品,同时还要开发智力成果在之后不断地增加价值。 编写可维护的代码很重要,因为大部分开发人员都花费

  • 问题内容: 我正在使用JSONObject来删除JSON字符串中不需要的certin属性: 它可以正常工作,但是问题是JSONObject是“名称/值对的无序集合”,我想保持String在通过JSONObject操作之前的原始顺序。 任何想法如何做到这一点? 问题答案: 你不能 这就是为什么我们称其 为名称/值对的无序集合 。 我不确定为什么需要这样做。但是,如果要订购,则必须使用json数组。

  • 关于代理,Java消息服务是如何工作的?我看到了创建producer的教程和示例

  • 我很可能错过了一些真正容易的东西,但我不明白为什么那些似乎对其他人都有效的东西对我却不有效。 目标:我想用非英语字符的本地输出运行shell命令,在变量中捕获输出,然后打印到屏幕。问题:所有我的输出应该有非英语字符被替换为? 思考:编码有问题吗?我正在运行Python3.8,不应该!!同样运行Windows10,但也发生在Windows7和Server2008中。 我尝试了子进程的许多变体--po