我希望根据.txt文件中的给定短语对数据进行标记。 通常,facet查询为我提供了空格标记化方面。但我希望结果是这样的。
例如,对于字段“test_data”,我的数据是“aaa bbb-ccc ddd eee”,facet应该是这样的
<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”&amp; “ddd eee”作为短语
由于
答案 0 :(得分: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"/>
答案 1 :(得分:0)
如果您不想构建自己的Tokenizer,可以使用PatternTokenizer:
例如,您有一个术语列表,以分号和分隔符分隔 零个或多个空格:老鼠;小猫;犬。
<fieldType name="semicolonDelimited" class="solr.TextField">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern=";\s*" />
</analyzer>
</fieldType>
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.PatternTokenizerFactory
这样你可以在其中添加自己的正则表达式。