Marklogic 如何使用标记化分解单词和数字

Marklogic 如何使用标记化分解单词和数字,marklogic,Marklogic,是否可以为将包含字母和数字的单词拆分为单独标记的字段配置自定义标记化规则?例如,我希望字符串“50pc”被分成两个标记“50”和“pc” 我可以为每个数字字符创建一个覆盖,将其视为一个符号,但这会给我三个单词“5”、“0”和“pc”,这不是我想要的 甚至可以使用标记化来实现这一点,或者我需要预处理数据吗?不确定,但这就是答案: tokenizer.wordChars('_', '_'); 如果不是,请清除更多。用于将10x4等表单拆分为10和4。没有边界字符的拆分起初看起来是不可能的。但是您可

是否可以为将包含字母和数字的单词拆分为单独标记的字段配置自定义标记化规则?例如,我希望字符串“50pc”被分成两个标记“50”和“pc”

我可以为每个数字字符创建一个覆盖,将其视为一个符号,但这会给我三个单词“5”、“0”和“pc”,这不是我想要的


甚至可以使用标记化来实现这一点,或者我需要预处理数据吗?

不确定,但这就是答案:

tokenizer.wordChars('_', '_');
如果不是,请清除更多。

用于将
10x4
等表单拆分为
10
4
。没有边界字符的拆分起初看起来是不可能的。但是您可以使标记器重写字段特定。所以这里有一个(未经测试的)想法

  • 创建一个用于将数字字符分类为
    删除
    标点符号
    的字段。根据需要配置字段根、包含和排除
  • 创建另一个对字母表字符执行相同操作的字段
  • 不要使用普通单词查询字段
通过该配置,您应该仍然能够使用
cts:word query
匹配
50pc
,以及使用
cts:field word query
匹配
50
pc


但是,预处理可能仍然是处理
50pc
的最佳方式。通过这种方式,您可以在标记中包含单位,如
50pc
-或类似的内容。从长远来看,这可能会给您带来更大的灵活性。

简短的回答:不,定制标记化目前并没有给您带来那么大的灵活性

考虑三个令牌“5”、“0”、“pc”是否确实存在问题。这取决于您的应用程序、数据和正在执行的查询类型。这将对通配符产生影响,对于较长的数字,您可能会得到更复杂的查询,或者需要位置以使其准确地解析为未过滤的数据,因为对于字段查询,数字会变成短语。你会得到比其他情况下更长的期限清单,在某些情况下,这可能会导致问题