我想用特殊字符索引一些单词。
例如,给定m&m
,我想将其作为一个整体进行索引,而不是将其分隔为m
和m
(通常&
将被视为分隔符)。
有没有办法通过使用标准的标记器/过滤器来实现这一点,还是我必须自己编写一个?
答案 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”将被视为单个令牌,因此它会像
那样编入索引