【问题标题】:Set solr search term required characters设置 solr 搜索词所需的字符
【发布时间】:2014-01-15 18:27:16
【问题描述】:

我们可以在 Solr 的哪个位置设置 Solr 搜索词中所需字符的限制?

例如,我想将搜索词字符限制设置为空,这应该返回所有结果

另一个例子-

假设,我想将搜索词字符限制设置为 5。所以当我搜索“apple”(5 个字符)或“orange”(5 个字符或更多)时应该返回结果。在这种情况下,如果我搜索“cat”,它不应该返回任何结果,因为最少需要 5 个字符。

我们在 Solr 中在哪里设置搜索字词所需的字符数限制?

【问题讨论】:

    标签: search solr lucene


    【解决方案1】:

    如果您不想索引和/或搜索具有预定义字符间隔的术语,您可以通过在分析器中配置 LengthFilter 来实现(在索引和/或查询时间,具体取决于您的特定需求)

    看这里:

    http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.LengthFilterFactory

    【讨论】:

    • 嗨,安德里亚。我不是 Solr 的专家。您能否解释一下您所说的“如果您不想索引和/或搜索具有预定义字符间隔的术语”是什么意思?
    • 呃,这么少的行很难。基本上:您的字段具有某种类型,在这种情况下必须是 TextField。模式中的 TextField 具有两个分析器链(索引时间或查询时间,如果只定义了一个分析器,则应用于两者)。将 LengthFilter 放入索引分析器意味着不满足最小和最大长度约束的字段将不会被索引;将过滤器放在查询分析器中意味着不满足最小/最大约束的搜索词将被忽略。效果更不一样......但如果你不想要这样的术语,不要索引它们。
    • 谢谢安德里亚!顺便说一句,当你需要额外的行时,你总是可以更新你的答案
    • 我的问题更多的是用户输入搜索内容的搜索词。只有当搜索词满足最小长度字符约束时,Solr 才能返回结果。因此,为此,从您提到的内容来看-“将过滤器放入查询分析器意味着将忽略不满足最小/最大约束的搜索词”应该满足?正确的?注意:我根本不想搞乱索引。
    • 您将在索引和查询时得到相同的结果。不同之处在于,在索引情况下,令牌没有被索引(即,较小的索引但长度约束是硬编码的),而在查询情况下,令牌存在但搜索词在运行时被过滤掉。顺便说一句,如果您认为(目前不是,因为我相信您应该尝试过)答案是正确的,请接受。
    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2011-02-07
    相关资源
    最近更新 更多