[英]How to narrow MySQL results for added PHP efficiency?
在 PHP 中,我使用 similar_text 来比较 MySQL 中的数万行。
$mostSimilarText = "";
$mostSimilarPercent = 0;
//SELECT * FROM table
while($row = $stmt->fetch()){ /* 10,000 results*/
similar_text("hello world", $row["source"], $percentMatch);
if($percentMatch > $mostSimilarPercent) {
$mostSimilarPercent = $matchPercent;
$mostSimilarText = $row["source"];
}
}
//Now I have the most similar text and percentage.
该代码有效,但运行速度非常慢,尤其是在处理大量结果时。 我的目标是优化它。 我想弄清楚如何限制 MySQL 结果而不是SELECT * FROM table
。 这将提高效率。
我已经尝试过使用LIKE 'hello world'
,但这将排除诸如“hello word”之类的结果(注意缺少的 L)。 我需要限制 MySQL 结果而不完全消除超过 75% 相似度的文本,或多或少。
有没有人对我如何做到这一点以提高性能有任何提示?
我会建议 DB 的组合。 在我为你做一些例子之前:想象一下你的关系模型都是非关系索引的。
Flat DB/Document DB 会做到这一点。 想一个单一的文件来说类似的话
{
"name": "Down to the river"
"artist": "BruCe Boss"
"sql_id": 1391
}
在此搜索“相似性”变得更加容易和快捷。 'Down the hiver',一个文件。
现在,将其扩展到您的所有音乐库。 在 1 个文件中,您的查询只是对具有该信息的 1 个文件的读取。 它是索引数据库的文档。 查询比读取所有记录等更快,并且结果具有可以读取的 SQL id。
它通过人们搜索的更多小信息丰富您当前的数据库,从而加快查询速度。
我将用一个很好的例子进行编辑,但上面应该得到它的主要内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.