如何在Solr中索引具有特殊字符的单词

时间:2013-03-08 20:46:59

标签: solr

我想用特殊字符索引一些单词。

例如,给定m&m,我想将其作为一个整体进行索引,而不是将其分隔为mm(通常&将被视为分隔符)。

有没有办法通过使用标准的标记器/过滤器来实现这一点,还是我必须自己编写一个?

3 个答案:

答案 0 :(得分:3)

基本上文本字段类型在索引之前过滤掉特殊字符。并且您可以使用字符串类型,但不建议在其上进行搜索。您可以使用 WordDelimiterFilterFactory 类型选项,然后将这些特殊字符转换为字母

%=>百分 &安培; =>和

答案 1 :(得分:2)

标准令牌生成器工厂以特殊字符拆分/标记给定文本。要使用特殊字符编制索引,您可以编写自己的自定义标记生成器,也可以执行以下操作:

  • 获取要对其进行标记/拆分的字符列表 文本。例如,我的列表是{" ",";"}
  • 使用PatternTokenizer 上面的字符列表,而不是StandardTokenizer。您的 配置将如下所示:

      <analyzer>
        <tokenizer class="solr.PatternTokenizerFactory" pattern=" |;" />
      </analyzer>
    

答案 2 :(得分:1)

您可以使用WhiteSpaceTokenizerFactory。

http://docs.lucidworks.com/display/solr/Tokenizers#Tokenizers-WhiteSpaceTokenizer

它只会在空格上进行标记。例如,

“m&amp; m”将被视为单个令牌,因此它会像

那样编入索引