Mysql 基于子序列查询的猜测数
我正在处理一个SQL查询,根据模糊子序列输入数据猜测/识别一个9位数。目标是基于多个子序列可能性的模糊/加权输入分数对数字进行排序 我很难生成和排序一个大的候选数字表 更具体地说,使用sqlfiddle.com,我目前无法生成或排序一个包含9位数字的大表 在架构构建阶段完成之前,我遇到了一个超时错误 有人能提供关于如何使用sqlfidde.com生成和排序大型表的建议吗 以下是SQLFIDLE链接: 下面是SQLFIDLE中使用的确切代码的副本: 查询文本:Mysql 基于子序列查询的猜测数,mysql,sql,Mysql,Sql,我正在处理一个SQL查询,根据模糊子序列输入数据猜测/识别一个9位数。目标是基于多个子序列可能性的模糊/加权输入分数对数字进行排序 我很难生成和排序一个大的候选数字表 更具体地说,使用sqlfiddle.com,我目前无法生成或排序一个包含9位数字的大表 在架构构建阶段完成之前,我遇到了一个超时错误 有人能提供关于如何使用sqlfidde.com生成和排序大型表的建议吗 以下是SQLFIDLE链接: 下面是SQLFIDLE中使用的确切代码的副本: 查询文本: CREATE TABLE numb
CREATE TABLE numbers (n INT);
INSERT INTO numbers VALUES (700000000),(700000001),(700000002),(700000003),(700000004);
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
INSERT INTO numbers SELECT n+(SELECT COUNT(*) FROM numbers) FROM numbers;
ALTER TABLE numbers MODIFY COLUMN n TEXT;
CREATE TABLE ft (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, value TEXT NOT NULL, FULLTEXT KEY (value)) ENGINE=MyISAM;
INSERT INTO ft (value) SELECT * from numbers;
查询文本
/* Generate table of valid social security number ( SSN ) or valid social insurance number ( SIN ) for Canada. */
/* FIXME - Currently using small placeholder table that will work with SqlFiddle */
/* Sort social security number ( SSN ) based on audio queries */
SELECT *,
match(value) against
('0*' IN BOOLEAN MODE)
/* "AMERICA" query with weighted subsequences */
/* Default input weighting/score is 10.0 */
+ 10.0 * 1.0 * (value REGEXP '1776')
+ 10.0 * 2.0 * (value REGEXP '177')
+ 10.0 * 2.0 * (value REGEXP '776')
+ 10.0 * 3.0 * (value REGEXP '17')
+ 10.0 * 5.0 * (value REGEXP '77')
+ 10.0 * 3.0 * (value REGEXP '76')
+ 10.0 * 1.0 * (value REGEXP '7')
+ 10.0 * 1.0 * (value REGEXP '704')
+ 10.0 * 1.0 * (value REGEXP '0704')
/* "NICKELBACK" query with weighted subsequences */
/* Default input weighting/score is 2.0 */
+ 2.0 * 1.0 * (value REGEXP '..5..5..5')
+ 2.0 * 2.0 * (value REGEXP '..5..5...')
+ 2.0 * 3.0 * (value REGEXP '..5.....5')
+ 2.0 * 3.0 * (value REGEXP '.....5..5')
+ 2.0 * 4.0 * (value REGEXP '..5......')
+ 2.0 * 4.0 * (value REGEXP '.....5...')
+ 2.0 * 8.0 * (value REGEXP '........5')
+ 2.0 * 1.0 * (value REGEXP '5')
/* "AFGHANISTAN" query with weighted subsequences */
/* Default input weighting/score is 4.0 */
+ 4.0 * 2.0 * (value REGEXP '2003')
+ 4.0 * 2.0 * (value REGEXP '200')
+ 4.0 * 2.0 * (value REGEXP '003')
+ 4.0 * 3.0 * (value REGEXP '20')
+ 4.0 * 3.0 * (value REGEXP '03')
+ 4.0 * 4.0 * (value REGEXP '911')
+ 4.0 * 1.0 * (value REGEXP '91')
+ 4.0 * 2.0 * (value REGEXP '11')
/* 7 at start is stronly preferred */
+ 10000.0 * (value REGEXP '7........')
as score
FROM ft
ORDER BY score DESC
LIMIT 1000
下面是我在sqlfiddle上遇到的确切错误:
语句由于超时或客户端请求而被取消我只需单击您的SQLFIDLE链接,按“构建架构”,然后按“运行SQL”,一切正常。我是否错过了一步?sqlfiddle有时会无缘无故地失败。我大部分时间都转向了我有一个类似的问题-我会使用@Barmar提到的db-fiddle.com