mysql - 具有逗号分隔值的 Solr Facet 多个单词

标签 mysql solr dataimporthandler

我正在将数据从 mysql 提取到 solr 中。其中一个字段是使用 group_concat 函数生成的,该函数生成一个逗号分隔的字段,其中列出了事件的所有波段。当时我认为这是为一次事件存储多个波段的最佳方式。但是,我发现我无法对所有事件进行查询。

我已将 band 字段设置为字符串,并将多值字段设置为 true。

<field name="bands" type="string" indexed="true" stored="true" multiValued="true"/>

结果与预期的一样,字符串被分面为一个长字符串。

"珍珠果酱、爱丽丝、尖叫树、Everclear",1, "Primus、Gaga、培根 block ",1, "公鸡、翅膀、鸡腿、尾羽",1,

此方法的最大问题是当字段类型为字符串时,它似乎不可搜索。似乎我需要创建一个类型为 text_general 的重复字段用于搜索,并有一个用于分面。是吗?

有没有办法为 band 字段声明一个分隔符以正确地分面,或者我的方法是错误的?

最佳答案

标记您的领域并不能解决您的分面问题,您将能够使用单个乐队名称进行搜索并获得结果,但分面会更糟。基本规则是不要对用于制作分面的字段使用任何标记化或文本增强。

使用多值字段很好,但实际上是将带有波段列表的单个值放入其中,因为您的查询将该列表作为单个列返回,该列映射到 Solr 中相关字段的单个值。

您可以保留 group_concat 输出并通过简单更改 data-config.xml 来解决您的问题,告诉 Solr 使用分隔符拆分这些波段名称。看看 RegexTransformer及其 splitBy 参数:

splitBy : Used to split a String to obtain multiple values, returns a list of values

如果您使用与 group_concat 相同的分隔符配置 splitBy,技巧就完成了,您将拥有多个值,并且您的分面看起来不错。

关于mysql - 具有逗号分隔值的 Solr Facet 多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914483/

相关文章:

php - 连接方法的方式和绑定(bind)变量的数量与中的标记数量不匹配。错误

java - 支持windows增量爬行的网络爬虫

mysql - 新字段未显示在搜索中

oracle - solr clobtransformer

mysql - SQL触发器创建外键行

mysql - PL/SQL 语法到 MySQL 语法

javascript - 文本区域只渲染一次的聊天应用程序中的反 CSRF 方法

solr - 在索引 mysql 表后检索数据

search - 最优 Solr JVM/虚拟/物理内存配置

mysql - DataImportHandler 未在 solr admin 中索引 mysql 表