Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL数据库表中搜索受文件类型限制的文件名?_Mysql_Search_Full Text Search_Replication_Sphinx - Fatal编程技术网

在MySQL数据库表中搜索受文件类型限制的文件名?

在MySQL数据库表中搜索受文件类型限制的文件名?,mysql,search,full-text-search,replication,sphinx,Mysql,Search,Full Text Search,Replication,Sphinx,我有一个从另一台服务器复制的MySQL数据库。数据库包含一个包含以下列的表 ID、文件名和文件大小 表中有超过400000条记录。我想在FileName(varchar)列中快速搜索 我发现我可以用这个斯芬克斯搜索引擎。问题是我想按文件类型限制搜索。我是否必须以及如何(触发器?)提取所有行的文件扩展名?可能我必须创建另一个表(因为这个表是复制的)并以1:1的关系连接它们 你能给我一些建议吗:)为什么不使用带有正则表达式的SQL查询 让它像 .$query.\.$extension 这将通配符将

我有一个从另一台服务器复制的MySQL数据库。数据库包含一个包含以下列的表

ID、文件名和文件大小

表中有超过400000条记录。我想在FileName(varchar)列中快速搜索

我发现我可以用这个斯芬克斯搜索引擎。问题是我想按文件类型限制搜索。我是否必须以及如何(触发器?)提取所有行的文件扩展名?可能我必须创建另一个表(因为这个表是复制的)并以1:1的关系连接它们


你能给我一些建议吗:)

为什么不使用带有正则表达式的SQL查询

让它像

.$query.\.$extension

这将通配符将搜索项与文件名、句点、扩展名进行匹配。

您肯定希望将文件类型分隔为单独的列-这将允许您对该项进行Sphinx搜索(匹配模式设置为extended):


然而,这并不是精确的匹配——它仍然会使用斯芬克斯的智能来匹配单词等等。这可能是您想要的,但如果您不想要,我建议将db标准化,并将文件类型放在另一个表中,并在文件表中使用外键。然后,您可以在Sphinx设置中使用此整数作为属性,并使用特定文件类型的id对其进行筛选。这在Sphinx中会更快、更可靠,但需要做更多的工作。

我认为这种搜索没有得到很好的优化(从我对索引的了解来看)另一个原因可能是我需要进行一些文件名转换,例如将“MyPicture.jpg”设置为“MyPicture”列(带空格)和“jpg”列(文件类型)
normal query terms @filetype jpg