针对字符串匹配优化的数据库/数据源?

Mat*_*oli 6 php database datasource string-matching database-performance

我想存储大量(〜数千)字符串,并能够使用通配符执行匹配.

例如,以下是示例内容:

  • Folder1
  • Folder1/Folder2
  • Folder1/*
  • Folder1/Folder2/Folder3
  • Folder2/Folder*
  • */Folder4
  • */Fo*4

(每行也有附加数据,如标签,但匹配仅针对该键)

以下是我想要与数据匹配的示例:

  • Folder1
  • Folder1/Folder2/Folder3
  • Folder3

(*在这里是一个通配符,它​​可以是一个不同的角色)

我天真地考虑将它存储在MySQL表中并使用%通配符与LIKE操作符,但MySQL索引只适用于通配符左侧的字符,在我的情况下它可以在任何地方(即%/Folder3).

所以我正在寻找一种可以在PHP中使用的快速解决方案.我是开放的:它可以是一个单独的服务器,一个使用正则表达式文件的PHP库,...

nub*_*iro -1

如果你跑SELECT folder_col, count(*) FROM your_sample_table group by folder_col是否会得到重复的folder_col 值(即count(*) 大于1)?

如果没有,这意味着您可以生成一个 SQL 来生成有效的 sphinx 索引(请参阅http://sphinxsearch.com/)。