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

时间:2009-12-05 20:05:47

标签: mysql search full-text-search replication sphinx

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

ID,FileName和FileSize

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

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

请你给我一些建议:)

2 个答案:

答案 0 :(得分:0)

您肯定希望将文件类型分隔为单独的列 - 这将允许您在该术语上指导Sphinx搜索(匹配模式设置为扩展):

normal query terms @filetype jpg

然而,这并不是完全匹配 - 它仍然会使用Sphinx关于单词匹配等的智能。这可能是您想要的,但如果您不这样做,我建议您对数据库进行规范化并将文件类型放在另一个表中,并在文件表中使用外键。然后,您可以将此整数用作Sphinx设置中的属性,并使用特定文件类型的ID对其进行过滤。这在Sphinx中会更快,更可靠,但它需要更多的工作。

答案 1 :(得分:-1)

为什么不在正则表达式中使用SQL查询?

使它成为......

.$query.\.$extension

这会将通配符与搜索词匹配到文件名中,然后是句点,然后是扩展名。