java - SoLR 中具有特殊字符的字段排序

标签 java solr solrnet

我是 SoLR 索引方面的新手。 我想对具有不同值的位置字段进行排序。它还包含以 'sAmerica、#'Japan、%India 等开头的值。

现在,当我对此字段进行排序时,我确实想考虑特殊字符,例如 's、'#、!、~ 等。 我想要排序,它将忽略这个字符并返回类似的结果 美国排名第一,%印度排名第二,#'日本排名第三。

如何让它成为可能?我正在使用 PatternReplaceFilterFactory,但不知道这一点。

  <analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.WordDelimiterFilterFactory" catenateWords="1"  />
    <filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />
  </analyzer>
</fieldType>

最佳答案

如果您想忽略特殊字符,请尝试使用以下字段类型。
这将小写单词并连接单词,排除所有特殊字符。

    <fieldType name="string_sort" class="solr.TextField" positionIncrementGap="1">
        <analyzer type="index">
            <tokenizer class="solr.KeywordTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
        </analyzer>
    </fieldType>

但是,这对于 'sAmerica 不起作用,因为 s 不是特殊字符。

<filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />

如果这是固定模式,您需要将其替换为上面的单词分隔符之前。

编辑 - 您使用此配置吗?

<fieldType name="string_sort" class="solr.TextField" positionIncrementGap="1">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern="'s" replacement="" replace="all" />
        <filter class="solr.WordDelimiterFilterFactory" catenateWords="1" />
    </analyzer>
</fieldType>

通过分析测试了以下内容,并生成了以下标记 -

KT - 阿尔加维
LCF-'萨尔加维
PRF - 阿尔加维
WDF - 阿尔加维

你能检查一下分析吗?

关于java - SoLR 中具有特殊字符的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7528723/

相关文章:

java - 如何从一个类调用另一个类

java - 无法解析和显示从 http 请求中读取的非 utf8 字符

java - 通常,当 java 返回 "The parameter is incorrect"时,这意味着什么

solrnet - Solr 索引中的重复项 - 添加两次或更多次的项目

c# - 在此上下文中没有响应

solr - 使用 SolrNet 从控制台应用程序查询 Solr?

java - 如何在 Eclipse 中解析带有 HTML 标签的注释?

php - OS X 安装 libcurl/Solr 安装

solr - Alfresco Solr 自定义搜索

django - 向Solr添加文档失败: [Reason: Error 404 Not Found]