【问题标题】:Stemming parameter in SolrSolr 中的词干参数
【发布时间】:2018-10-15 23:25:40
【问题描述】:

是否有任何参数,如(edismax 或 dismax 或任何其他),我可以设置用于在 Solr 中进行词干提取,或者我需要在 Solr 的 schema.xml 中进行更改以实现词干提取? 问题是如果我默认更改 schema.xml 我不想要的词干/语音工作?我正在使用来自第三方应用程序的 Solr,在 UI 中我们有用于检查/取消选中的复选框,我将这些参数传递给 Solr 并从 Solr 获取数据,我无法将此 UI 参数传递给 SOlr,所以如果有任何参数在Solr 方面我可以通过它来阻止工作吗?

请告诉我?

【问题讨论】:

    标签: solr stemming


    【解决方案1】:

    词干作为分析链的一部分执行,因此是该特定字段的架构定义方式的一部分。

    当您考虑词干提取的工作原理时,其原因就很明显了 - 为了使词干提取有意义,必须对术语进行词干在被索引时,以及在被查询时。

    Lucene 获取您的输入字符串,通过您的分析链运行它并将生成的标记保存到其索引中。给它what are you asking 可能最终会变成whatareyouask,在通过空格标记并应用词干之后。

    查询时会发生相同的操作,因此如果有人搜索asks,则令牌会被提取为ask - 然后与索引中的内容进行比较。如果在索引时没有进行词干提取,那么您最终会在索引中得到asking,在查询时会得到ask - 这不匹配,因为令牌不一样。

    在您的第三方应用程序中,词干提取选项可能会在将内容发送到 Solr 之前在应用程序内部执行词干提取。

    你也可以use the Schema API to dynamically update and change field type definitions

    【讨论】:

    • 好的,这意味着没有参数,因为它必须在模式级别完成,并且 schema.xml 需要更改为相同,对吧?
    • 没错,但这并不意味着必须为您索引的所有内容进行更改。使用您的词干配置添加(或更新)特定字段类型,然后使用copyField 或类似方法将相同的内容索引到多个字段中,并根据您的需要相应地搜索每个字段(您可以在 (e) 中使用 qf dismax 同时搜索多个字段)。这样您就可以动态地决定您想要如何搜索(以及如何权衡不同的字段),并获得您想要的行为。
    • 在 Solr 方面,schema.xml 我对词干和语音进行了更改,我在我的架构中引入了三个字段(1 用于词干,1 用于语音,1 用于普通文本)。默认情况下,将搜索具有普通文本的字段,当客户端从客户端 UI 中选择词干或拼音时,将在 solr 中搜索相应的字段。有没有更好的方法来做到这一点,因为我正在复制内容(词干字段和 phoentic 字段)??
    • 这听起来像是正确的做法。您不必将字段设置为存储,因此设置stored="false"。这样可以避免多次存储实际内容,只存储每个字段的特定标记。
    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多