Mysql 将带有电子邮件的db表导入solr

Mysql 将带有电子邮件的db表导入solr,mysql,solr,mariadb,Mysql,Solr,Mariadb,我有一个带有包含json字符串的字段的表。我遇到了一个问题:没有导入包含ff字符串的记录: 创建文档时出错:SolrInputDocument(字段:[txn_id=xxx0101,​ 添加日期=2018-07-27 11:58:11.0,​ jsonfield1={“电子邮件”:user@host.com"},​ id=545,​ jsonfield2={“email2”:user02@host.com"},​ 类型=01,​ 状态=0,​ 版本=xxxx]) 我注意到索引的记录不包含电子邮件

我有一个带有包含json字符串的字段的表。我遇到了一个问题:没有导入包含ff字符串的记录:

创建文档时出错:SolrInputDocument(字段:[txn_id=xxx0101,​ 添加日期=2018-07-27 11:58:11.0,​ jsonfield1={“电子邮件”:user@host.com"},​ id=545,​ jsonfield2={“email2”:user02@host.com"},​ 类型=01,​ 状态=0,​ 版本=xxxx])

我注意到索引的记录不包含电子邮件字符串。从mariadb/mysql数据库导入时是否有转义处理程序


更新:我只是想澄清一下。我的帮助请求很简单:被拒绝的数据在json字段中包含一个@符号(一封电子邮件),而其他没有该符号的记录则正常导入。我该如何告诉索尔从字面上对待它,或者如果我需要逃避它。请不要给我关于数据库设计或规范化或我如何配置它的建议。这个设计是经过深思熟虑的。这不是我要的帮助。我已经指出了潜在的原因。我不知道怎么修理它。如果不能,我也没问题。

您希望规范化电子邮件字段,而不是将“field1”映射到多个值,您希望将字段命名为
email
email2
,而不是将值直接放在它们下面。具体如何操作取决于您现在如何将值导入Solr。@MatsLindh这些字段来自第三方使用者,因此在此处对其进行规范化是没有意义的,因为有效负载可能因使用者而异。(不,我们不能告诉他们通过什么)。我们决定暂时将其设置为json字符串(这仍然是PoC)?你实际上是如何为它编制索引的?编辑原始问题,让其他人看到。@AlexandreRafalovitch我们现在不在乎(谢天谢地)。我们可以用这些字段搜索所需的字符串。子字符串很好,很公平。但是仍然不清楚您是如何索引它的(json/xmol/solrj/dih)以及您的导入定义是什么。因此,很难判断json字符串何时/何地消失。理论上,您可以通过ngram处理将字段(field1/field2)视为文本字段来拾取子字符串。这将包括一些垃圾(引号、专栏等),但可能已经足够了。