1

我想要一些东西来根据 .txt 文件中的给定短语对数据进行标记。通常,构面查询会给我空格标记化的构面。但我希望结果是这样的。

例如,对于字段“test_data”,我的数据是“aaa bbb-ccc ddd eee”,方面应该是这样的

<lst name="test_data">
    <int name="aaa">1</int>
    <int name="bbb-ccc">1</int>
    <int name="ddd eee">1</int>
</lst>

并且 somefile.txt 将具有“bbb-ccc”和“ddd eee”作为短语

谢谢

4

2 回答 2

1

我刚刚发现 KeepWordFilterFactory 可以完成这项工作。我在架构中添加了这个字段类型

<fieldType name="text_keepword" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.KeepWordFilterFactory" words="keepwords.txt" ignoreCase="false" enablePositionIncrements="false"/>
    </analyzer>
</fieldType>

和这个领域

<field name="keep_fld" type="text_keepword" indexed="true" stored="true"/>
于 2013-01-23T06:41:14.090 回答
0

如果您不想构建自己的 Tokenizer,可以使用 PatternTokenizer:

例如,您有一个术语列表,由分号和零个或多个空格分隔:mice;小猫;小狗。

<fieldType name="semicolonDelimited" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.PatternTokenizerFactory" pattern=";\s*" />
  </analyzer>
</fieldType>

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.PatternTokenizerFactory

这样您就可以在其中添加您自己的带有 bbb-ccc 的正则表达式。

于 2013-01-22T14:15:27.907 回答