我拥有超过8百万条记录,其中包含一列#34;名称"我必须找到一种优化搜索select * from ... like '%string%'
的方法。
问题是你无法使用和索引。所以我的想法是做一个"统计"字符串如:
[char][number of chars][char][number of chars][char][number of chars]...
其中char
是字符串中的字符,然后是字符串中的字符数。
我们可以有这样的字符串:
name='Electroperro'
result='E01c01e02l01o02p01r03t01'
nom='Tanataka'
result='T01a04k01n01t01'
嗯,你明白了。我在Php中做过这样的话:
function string_stat($tab) {
$ret="";
foreach ($tab as $key=>$c) {
$ret.=sprintf("%s%02d", $key, $c);
}
return $ret;
}
echo 'nom='.var_export($nom,true)."\n";
$stat=array();
for ($i=0; $i<mb_strlen($nom); $i++) {
$c=mb_substr($nom, $i, 1);
if (!isset($stat[$c])) {
$stat[$c]=0;
}
$stat[$c]++;
}
echo string_stat($stat)."\n";
我希望在JavaScript中使用与Mongoose完全相同的NodeJS原则。你会怎么做?
答案 0 :(得分:0)
我认为在这种情况下,您必须使用一些特殊的搜索引擎,例如Sphinx
或elasticsearch
。它将立即进行搜索,因为它是专门为此开发的。我认为在MySQL(或其他数据库)中做这件事并不是好办法。