【问题标题】:Solr indexing, split string field into listSolr索引,将字符串字段拆分为列表
【发布时间】:2023-04-01 21:52:01
【问题描述】:

在 Solr 中,我想通过拆分将字符串字段索引为列表。

下面是我在data_config.xml 文件中的索引查询。

<document name="Example">
<entity dataSource="example_table" name="Example" 
    query="select id, text from example_table"
    pk="id"
    transformer="RegexTransformer"
>
    <field column="id" name="id" />
    <field column="text" name="text" />
</entity>

字段text 是一个逗号分隔的字符串。示例:"A, B, C"

下面是schema.xml文件中的字段定义

<field name="text" type="string" indexed="true" stored="true" required="false" multiValued="true" />

当我查询 Solr 时,输出是:

"text":["A, B, C"]

谁能解释一下我怎样才能得到如下结果?

"text":["A","B","C"]

【问题讨论】:

    标签: text indexing solr tokenize


    【解决方案1】:

    在您的 DataImportHandler 定义中执行此操作(因为您已经添加了 RegexTransformer):

    <field column="text" name="text" splitBy=", " />
    

    或者在你的字段定义中使用带有Regular Expression Pattern Tokenizer的TextField:

    <analyzer>
      <tokenizer class="solr.PatternTokenizerFactory" pattern=","/>
      <filter class="solr.TrimFilterFactory"/>
    </analyzer>
    

    【讨论】:

    • 我都试过了,但还是不行。我使用的是 Solr 7.2.1 版本。
    • 那么“不起作用”是什么意思?它会给出错误的答案吗?你重新索引了吗?你看到任何变化吗?您收到错误消息吗?您确定您的更改已生效(即您是否在进行更改后重新加载/重新启动了 Solr)? Solr Admin 下的“分析”页面告诉您该字段是如何处理的? “不起作用”无助于解决问题:-)
    • 我已经重新索引 Solr 并且在查询时我仍然得到如下输出:"text":["A, B, C"] 当预期结果是 "text":["A"," B","C"]
    • 第二个不会更改返回的实际文本,只会更改被索引的内容(即在后端级别生成哪些令牌)。我认为 DIH 配置的正则表达式版本会更改存储的实际内容,您可能需要添加 debug=true 或设置 logLevel="debug" 以获取 more information when running DIH
    猜你喜欢
    • 1970-01-01
    • 2012-06-06
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2011-11-13
    相关资源
    最近更新 更多