gpt4 book ai didi

mysql - 与位置无关的字符串匹配

转载 作者:行者123 更新时间:2023-11-29 01:59:19 25 4
gpt4 key购买 nike

我的 mysql 数据库中有 2,000,000 个字符串。现在,当输入一个新字符串时,我会尝试查明该字符串是否已在我的数据库中,否则,我会插入该字符串。

字符串匹配的定义

就我而言,文本中单词的位置并不重要。只有所有单词都应该出现在字符串中,并且任何一个字符串中都没有额外的单词。

Ex - Ram is a boy AND boy is a Ram 将匹配。 Ram 是个好 child 不会匹配。

PS - 请无视意义

现在,我的问题是,考虑到我必须与 匹配的字符串数量 (2,000,000),进行这些匹配的最佳方法是什么。

我能想到的解决方案:

  1. 索引SOLR/Sphinx中的所有字符串
  2. 在新的搜索中,我只会命中搜索服务器并且必须考虑最多前 10 个字符串

优点:-

  1. 比 mysql 全文搜索更快

缺点:-

  1. 使用 mysql 中的新查询保持搜索服务器更新数据库。

还有其他更好的解决方案吗?欢迎提出解决此问题的任何建议和方法:)

谢谢!

最佳答案

您可以只计算第二列,其中的单词按排序顺序排列。然后只是该列的唯一索引 :)

ALTER TABLE table ADD sorted varchar(255) not null, unique index(sorted);

然后...(PHP 为了方便,但其他语言会类似)

$words = explode(' ',trim($string));
sort($words);
$sorted = mysql_real_escape_string(implode(' ',$words));
$string = mysql_real_escape_string($string);

$sql = "INSERT IGNORE INTO table SET `string`='$string',`sorted`='$sorted'";

关于mysql - 与位置无关的字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238755/

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