【问题标题】:Indexing subwords of an URL in Solr在 Solr 中索引 URL 的子词
【发布时间】:2017-04-21 00:36:21
【问题描述】:

我想为我的 poc 使用 solr,但我对以下问题感到震惊,无法找到解决方案。

任何帮助将不胜感激。!!

以下是我试图实现的四种情况: 网址: 1.www.abc.com 2.www.abcdef.com 3.www.123.com/abc 4.www.123.com/abcdef

我正在使用标准标记器来索引 URL,这些 URL 将单词拆分如下并索引。 1.www.abc.com 2.www.abcdef.com 3.www.123.com 和 abc 4.www.123.com和abcdef

当我搜索 abc 时,我只会得到第三个 URL 作为搜索结果。

但是当我使用关键字 abc 搜索时,我想获取所有四个 URL。

Kinldy 建议。

谢谢。

【问题讨论】:

    标签: solr solrcloud


    【解决方案1】:

    当您使用字符串“abc”搜索时,所有带有标记“abc”的文档都会作为结果检索。所以 abc 将只匹配 abc。

    要使用查询“abc”匹配 abcde 或 abcd.. 等,您应该使用 n-gram 索引文档

    阅读 Edge N-grams。

    在您的架构文件中为字段分析器 type="index" 添加以下过滤器到您的字段类型定义。

    <filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="2"/>
    

    示例:字段名称="abcde"

    EdgeNGramFilterFactory 会生成像 ab,bc,cd,de,abc,bcd,cde,abcd,bcde,abcde,

    【讨论】:

    • 感谢您的回复 vinod。如果我们有几个字符的字段名称并生成令牌,我认为 NGram 的使用很好。但在我的情况下,字段是一个长度可能很长的 URL,所以我猜在这种情况下它会创建大量的令牌。!!你怎么看..
    • 正确,它会生成更多数量的令牌。因此索引大小和索引时间都会增加。没有其他方式使用 solr。
    猜你喜欢
    • 2019-01-11
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多