是否可以为字段配置自定义标记化规则,将包含字母和数字的单词分解为单独的标记?例如,我希望将字符串“50pc”拆分为两个标记“50”和“pc”。
我可以为每个数字字符创建一个覆盖,将其视为一个符号,但这会给我三个单词“5”、“0”和“pc”,这不是我想要的。
是否可以使用标记化来做到这一点,或者我是否需要预处理数据?
最佳答案
Tokenizer overrides被设计成分割形式,如 10x4
进入10
和4
。没有边界字符的分割一开始看起来是不可能的。但是......您可以使标记器覆盖特定于字段的标记器。所以这是一个(未经测试的)想法。
- 创建一个使用
admin:database-add-field-tokenizer-override
的字段将数字字符分类为remove
或punctuation
。根据需要配置字段根、包含和排除。 - 创建另一个字段,对字母字符执行相同的操作。
- 保留普通的单词查询字段。
使用该配置,您应该仍然可以使用 cts:word-query
匹配50pc
,以及使用 cts:field-word-query
匹配 50
或pc
.
但是预处理可能仍然是处理 50pc
的最佳方法。这样您就可以在标记中包含单位,如 <pieces xmlns="http://example.com/2014/units" value="50">50pc</pieces>
- 或类似的规定。从长远来看,这可能会给您带来更大的灵 active 。
关于marklogic - 如何使用标记化来分解单词和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914772/