2012-11-21 63 views
4

我们有NUMERICS一个破折号即n-NNNNNNN的Solr 3.6.1拆分单词边界

链接http://lucidworks.lucidimagination.com/display/solr/Tokenizers(在标准分词和经典标记生成器的部分)除以故障单格式意味着在Unicode标准附录UAX#29的支持前后:

除非单词中有数字,否则单词在连字符中被拆分,在这种情况下令牌不会被拆分,并且数字和连字符是保存。

我们的Solr安装仅使用StandardTokenizerFactory,但此故障单格式正在破折号查询中拆分。我是solr/lucene的新手。我已经下载了3.6.1的代码,并且评论意味着相反的意思(除非虚线数字仍被视为数字)。我无法跟随莱克斯处理:产生

  • 令牌是以下类型的:
    • <ALPHANUM>:的字母序列和数字字符
    • <NUM>:数字
    • <SOUTHEAST_ASIAN>:来自南亚和东南亚
    • 亚洲语言,包括泰国,老挝,缅甸和柬埔寨
    • <表意>字符序列:一个CJKV表意字符
    • <平假名>:单平假名字符

钙ñ任何人澄清这个谢谢。

+0

我可以确认您至少在处理模式/^\ d {1,5} - \ d $ /时需要使用经典分析器。我想知道输入中的最初的单个数字是否是问题? –

+0

我实际上并没有使用模式过滤器。只是StandardTokenizerFactory。 – user1840253

+0

对不起,我的意思是数据中的输入模式。我已经看到与带有LOINC号码的3.x +标准分析仪相同的行为,这些号码是1-5位数,后跟一个' - '和一个数字。 –

回答

1

您需要正则表达式模式标记器。该标记器使用Java正则表达式将输入文本流分解为标记。由pattern参数提供的表达式可以解释为分隔符,也可以将应该从文本中提取的模式作为标记进行匹配。

有关Java正则表达式语法的更多信息,请参阅Javadocs for java.util.regex.Pattern