【问题标题】:Solr. Store not the original field, but filtered one索尔。不存储原始字段,而是过滤一个
【发布时间】:2012-04-22 16:52:09
【问题描述】:

我正在尝试索引维基百科的转储。为了为文章提供摘要(或者,将来可能启用突出显示功能),我想在没有 WikiMarkup 的情况下存储他们的文本。对于第一次尝试,我只留下字母数字符号就足够了。那么问题是可以存储在字符级别过滤的字段,而不是原始字段吗?

【问题讨论】:

    标签: solr lucene indexing


    【解决方案1】:

    没有开箱即用的方法。如果您希望 Solr 执行此操作,您可以创建自己的 UpdateHandler,但这可能有点棘手。最简单的方法是在将文档发送到 Solr 之前对其进行预处理。

    【讨论】:

    • 我已经得出了同样的结论。如果有足够的时间,这就是我可能会实施的。无论如何,谢谢,我感谢 UpdateHandler 的提示。
    【解决方案2】:

    默认情况下,Solr 会在索引时间分析器为您的 fieldType 应用过滤器之前存储原始字段值。所以默认情况下它不存储过滤后的值。但是,您有两种选择来获得您想要的结果。

    1. 您可以在查询时对字段应用与在索引时应用相同的过滤器来删除 wiki 标记。详情请参阅Analyzers, Tokenizers and Token Filters on the Solr Wiki
    2. 您可以在将数据加载到 Solr 之前在单独的进程中将过滤器应用于数据,然后 Solr 将存储过滤后的值,因为您将在过滤状态下传递它们。

    【讨论】:

    • 我接受了 jpountz 的回答,因为关于实现自定义 UpdateHandler 的有用提示。而且我认为您的建议 No.1 对我的目的没有用,因为我认为让用户使用 WikiMarkup 构建查询没有任何意义。
    • 不用担心。但是,您错过了第 1 点。用户不需要使用 WikiMarkup 编写查询。在存储 wiki 页面文本的 Solr fieldType 中,如果您在使用 PatternReplaceCharFilterFactory - wiki.apache.org/solr/… 之类的索引时剥离 WikiMarkup,您还需要在 fieldType 定义的查询端使用相同的过滤器。有关详细信息,请参阅wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#Analyzers
    猜你喜欢
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2015-11-23
    • 2016-09-14
    相关资源
    最近更新 更多