1

我想一起索引一些带有特殊字符的单词。

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

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

4

3 回答 3

3

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

% => 百分比 & => 和

于 2013-03-09T17:10:55.397 回答
3

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

  • 获取要标记/拆分文本的字符列表。例如,我的清单是{" ",";"}.
  • 使用带有上述字符列表的PatternTokenizer ,而不是 StandardTokenizer。您的配置将如下所示:

      <analyzer>
        <tokenizer class="solr.PatternTokenizerFactory" pattern=" |;" />
      </analyzer>
    
于 2013-03-10T03:47:23.453 回答
1

你可以使用 WhiteSpaceTokenizerFactory。

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

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

"m&m" 将被视为单个标记,因此它会像这样被索引

于 2013-03-11T03:12:03.137 回答