gpt4 book ai didi

php - 寻求从字符串中删除 544 个单词的任何实例的优雅方法

转载 作者:行者123 更新时间:2023-11-29 02:08:12 24 4
gpt4 key购买 nike

我需要从用户输入的搜索字符串中删除 544 个全文停用词的任何实例,然后将其格式化以在 bool 模式下运行部分匹配全文搜索。

输入:“纽约市”,输出:“+york* +city*”(“new”是停用词)。

我有一个丑陋的解决方案:将搜索字符串分解为单词数组,查找停用词数组中的每个单词,如果匹配则取消设置,分解剩余的单词,最后运行正则表达式以添加 bool 模式格式化。必须有一个更优雅的解决方案。

我的问题分为两部分。

1) 你认为最干净的方法是什么?

2) 我使用一个巨大的正则表达式解决了部分问题,但这引发了另一个问题。

编辑:这确实有效。我很尴尬地说,我遇到的内存问题(我相信是我的正则表达式)实际上是在代码后期生成的,因为在过滤掉停用词后有大量匹配项。

$tmp  = preg_replace('/(\b('.implode('|',$stopwords).')\b)+/','',$this->val);
$boolified = preg_replace('/([^\s]+)/','+$1*',$tmp);

最佳答案

构建一个 suffix tree从 544 个单词中逐个字母地遍历输入字符串,然后在每个新单词的开头跳回到树的根部。当您在单词末尾找到匹配项时,将其删除。如果单词列表保持静态,则输入字符串的长度为 O(n)。

关于php - 寻求从字符串中删除 544 个单词的任何实例的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277387/

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