【发布时间】:2014-08-02 00:05:34
【问题描述】:
简而言之:
在 schema.xml 我想声明一个 analyzer 用 PatternTokenizer 分解一个字段,然后我想拥有那些PathHierarchyTokenizer 处理的值。
(Path Tokenizer 将诸如“a/b/c”之类的路径分解为 [a, a/b, a/b/c])
加长版问题:
我的整体数据不是 CSV,但我有一个包含逗号分隔值的字段;从逻辑上讲,它就像一个多值字段,但它只是作为一个分隔字符串传入。
这些单独的值恰好是带有斜线分隔符的分类路径。
所以一个文档可能看起来像:
<doc>
<field name="id">12345</field>
<field name="title">This is the Title</field>
<field name="taxo_paths">A/B/C,D/E,F/G/H/I</field>
</doc>
首先它应该通过 PatternTokenizer 将字段 taxo_paths 拆分为这些标记 pattern=",":
- A/B/C
- D/E
- F/G/H/I
那么PathHierarchy应该发挥它的魔力并将它们变成:
- 一个
- A/B
- A/B/C
- D
- D/E
- F
- F/G
- F/G/H
- F/G/H/I
Path Hierarchy tokenizer 非常酷!
假设我无法控制数据的输入方式。假设我们不想使用任何自定义 Java 过滤器或标记器。另外,我意识到 PathHierarchyTokenizer 中有一个微妙之处,因为它实际上是通过仅将其中一个标记的标记偏移设置为 1 并将其余标记设置为 0 来创建同义词;假设我现在也不关心这个。
【问题讨论】:
-
所以您面临的主要问题是
solr.PatternTokenizerFactory和solr.PathHierarchyTokenizerFactory都是分词器,您只能在分析器链中指定一个分词器,对吧? -
@arun 是的,就是这样。我真的认为如果打包为过滤器,两者都会很有用,我可以想象将两者与其他逻辑混合和匹配的场景。
标签: csv solr tokenize taxonomy