我有一个MySQL数据库,我从另一台服务器复制。该数据库包含一个包含此列的表
ID,FileName和FileSize
表中有超过4'000'000条记录。我想在FileName(varchar)列中快速搜索
我发现我可以使用这个Sphinx搜索引擎。问题是我想按文件类型限制搜索。我是否必须以及如何(trigers?)为所有行提取文件扩展名?可能是我必须创建另一个表(因为这个表被复制)并以1:1的关系加入它们?
请你给我一些建议:)
答案 0 :(得分:0)
您肯定希望将文件类型分隔为单独的列 - 这将允许您在该术语上指导Sphinx搜索(匹配模式设置为扩展):
normal query terms @filetype jpg
然而,这并不是完全匹配 - 它仍然会使用Sphinx关于单词匹配等的智能。这可能是您想要的,但如果您不这样做,我建议您对数据库进行规范化并将文件类型放在另一个表中,并在文件表中使用外键。然后,您可以将此整数用作Sphinx设置中的属性,并使用特定文件类型的ID对其进行过滤。这在Sphinx中会更快,更可靠,但它需要更多的工作。
答案 1 :(得分:-1)
为什么不在正则表达式中使用SQL查询?
使它成为......
.$query.\.$extension
这会将通配符与搜索词匹配到文件名中,然后是句点,然后是扩展名。