gpt4 book ai didi

solr - Lucene 分析器链 : ShingleFilter without filler tokens

转载 作者:行者123 更新时间:2023-12-01 11:42:14 25 4
gpt4 key购买 nike

在我的分析器链中,ShingleFilter 位于停用词过滤器之后。如 docs 中所述, ShingleFilter 通过插入填充标记(带有术语文本“_”的标记)处理位置增量 > 1。

For example : "please divide this sentence into biword shingles" 

Shingles of size 2 : please divide, divide _, _ sentence, sentence _, _ biword, biword shingles (assuming that "this, "into" are stopwords)

我想用填充标记消除那些带状疱疹,即我想要的输出只包含:请除,双字带状疱疹。

我有一个专门用于 4 克带状疱疹刻面的字段。由于这些停用词,所有方面约束(或值)对于像 "divide _ sentence _"

这样的填充物来说看起来毫无用处

请你指导我。

使用 Solr 4.4。

更新

我想在 StopFilter 配置中将 enablePositionIncrement 设置为 false。不确定这是否解决了问题,但 Lucene 4.4 不再支持它。

最佳答案

ShingleFilterFactory 之后的分析器链中添加 PatternReplaceFilterFactory。将所有包含填充 token 的 token 替换为空字符串,即“”。

这可能会暂时解决您的问题,但永久解决方案必须编写您自己的分析器或自定义 ShingleFilter。

示例字段类型:

<fieldType name="text_general_shingle" class="solr.TextField" positionIncrementGap="100">     
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true"/>
<filter class="solr.PatternReplaceFilterFactory" pattern=".*_.*" replacement=""/>
</analyzer>
</fieldType>

关于solr - Lucene 分析器链 : ShingleFilter without filler tokens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com