在MySQL数据库表中搜索受文件类型限制的文件名?
我有一个从另一台服务器复制的MySQL数据库。数据库包含一个包含以下列的表 ID、文件名和文件大小 表中有超过400000条记录。我想在FileName(varchar)列中快速搜索 我发现我可以用这个斯芬克斯搜索引擎。问题是我想按文件类型限制搜索。我是否必须以及如何(触发器?)提取所有行的文件扩展名?可能我必须创建另一个表(因为这个表是复制的)并以1:1的关系连接它们在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 这将通配符将
你能给我一些建议吗:)为什么不使用带有正则表达式的SQL查询 让它像
.$query.\.$extension
这将通配符将搜索项与文件名、句点、扩展名进行匹配。您肯定希望将文件类型分隔为单独的列-这将允许您对该项进行Sphinx搜索(匹配模式设置为extended):
然而,这并不是精确的匹配——它仍然会使用斯芬克斯的智能来匹配单词等等。这可能是您想要的,但如果您不想要,我建议将db标准化,并将文件类型放在另一个表中,并在文件表中使用外键。然后,您可以在Sphinx设置中使用此整数作为属性,并使用特定文件类型的id对其进行筛选。这在Sphinx中会更快、更可靠,但需要做更多的工作。我认为这种搜索没有得到很好的优化(从我对索引的了解来看)另一个原因可能是我需要进行一些文件名转换,例如将“MyPicture.jpg”设置为“MyPicture”列(带空格)和“jpg”列(文件类型)
normal query terms @filetype jpg