gpt4 book ai didi

Solr PatternReplaceCharFilterFactory 没有替换为指定的模式

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

所以我是 Solr 的新手,但我正在尝试使用 PatternReplaceCharFilterFactory 对将要存储的电话号码字符串进行一些预处理。这是该字段的配置:

<fieldType name="phone_number" class="solr.TextField" >
<analyzer>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="\(?(\d{3})?\)?[-. ]?(\d{3})[-. ]?(\d{4})"
replaceWith="$1-$2-$3"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
</fieldType>

我已经测试了正则表达式,它符合我期望的所有内容(例如 555.444.1234、(555) 444-1234、5554441234、4441234、444-1234 等)。

现在我的理解是正则表达式应该匹配传递给它的内容并将其替换为指定的模式。因此,如果他们通过了我 555.123.4444,我希望它会导致 555-123-4444 被传递给 StandardTokenizerFactory。从那里它将被分解为 token 555,123,4444。

鉴于我在这方面花费了多少时间,我确信我遗漏了一个小的配置问题,但从可用的文档(我已经看到)中,我不知道它是什么。

先感谢您。

最佳答案

好的,所以我在又一次“幸运”的谷歌搜索后发现了这个链接 Solr filters: PatternReplaceCharFilter在最底部,他们讨论了高级参数,我认为这更好地解释了过滤器的实际工作方式:

CharFilter operates on a single character, and pattern matching requires an internal buffer to read more characters. MaxBlockChars allows you to specify the size of the buffer.



我的问题是它读取的是单个字符而不是整个字符串。这与我看到的例子相反。所以解决方案是在我的 charFilter 上,我添加了 MaxBlockChar 属性,瞧它的工作原理。在 LucidImagination 的网站和 solr wiki(我遇到的)上都没有提到这个属性。

关于Solr PatternReplaceCharFilterFactory 没有替换为指定的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524678/

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