删除所有行中出现的相似字符

remove similar characters that appear in all rows

本文关键字:相似 字符 删除      更新时间:2023-09-26

所以我有一个有两列"title"answers"url"的表。行如下:

Title                              url
    Galago - Wikipedia                  http://en.wikipedia.org/wiki/Galago         
    Characteristics - Wikipedia          http://en.wikipedia.org/wiki/Galago
    Classification - Wikipedia           http://en.wikipedia.org/wiki/Galago
    Myst- Gamestop                       http://www.gamestop.com/ds/games/myst/69424
    Plot- Gamestop                       http://www.gamestop.com/ds/games/myst/69424

我的问题是,我如何从某个url中删除所有行中出现的常见字符(从前三行中删除- Wikipedia,从其他两行中删除- Gamestop)。这只是一个小例子....我有许多具有相同模式的其他行(它们具有在来自某个url的所有行中重复出现的常见字符、单词)。我想补充的是,这些值是从javascript数组

中存储的

如果标题列的所有字符串都是上面所示的格式,我认为最好的方法可能是在插入数据库表之前对标题应用正则表达式。这个正则表达式可以捕获"-"字符前面的所有数据,并丢弃"-"后面的"重复"数据。

关于PHP字符串正则表达式的信息可以在这里找到:http://php.net/manual/en/function.preg-match.php

我认为大多数自动化的解决方案会删除您想要保留的数据。出现在多行中的单词或短语不一定是多余的。我想到了一些可能的、但仍然不可靠的方法。只有当你在寻找整个单词时,这些方法才有效。

  1. 将所有标题读入数组,并将每个标题拆分为单词创建一个wordlist数组。然后,您可以确定每个单词的频率,并使用该信息从标题中删除不需要的单词。如果你有很多数据,这个方法可能会占用很多内存。

  2. 解析每个URL,提取主机名,使用句点(。)作为分隔符,然后从标题中搜索并删除这些字符串的出现。您可以选择创建要忽略的字符串白名单,如www、com、co、uk、net、org等。如果在域名中发现不需要的单词(如您的示例),此方法可能有效。

您可以将url信息规范化到另一个表中…取url列,让它url_id然后创建url表,提供url列和标题列。标题可以是Wikipedia或Gamestop等。然后在原始表中存储标题,仅包含标题,不包括url标题。

也许这不能很好地处理你正在尝试做的查询,但这样你就可以很容易地通过url, url标题,或标题或这些的任何组合进行搜索。