Cro*_*zin 5 performance search full-text-search
表示不同类型事件(音乐会,足球比赛,慈善机构等)的SQL数据库,其中每个都包含与事件相关的数据(音乐会 - 艺术家姓名,匹配 - 主持人/访客团队).所有这些事件都从一个通用表继承event
,该表包含与所有这些事件相关的数据(名称,描述,位置,开始/结束日期).使用Hibernate或Doctrine中已知的table-per-subclass模型实现继承.该数据库还存储表artists
(id
,name
,birth_date
)和football_teams
(id
,name
,country
,coach_name
)在使用event_concerts
和event_football_matches
表(通过FKS).
创建一个给定一些标准({name: "manchester", startDate: "01.01.2012 - 01.02.2012"}
或{location: "london", description: "artists +metallica -bieber"}
)的搜索引擎将返回符合条件的所有事件,以及artists
/ football_teams
tables的结果.
这些事件的某些属性包含大量文本,应以全文搜索方式进行搜索.
根据以下搜索条件:
{ location: "london", startDate: "05.11.2012 - 07.11.2012" }
Run Code Online (Sandbox Code Playgroud)
搜索引擎应返回:
如您所见,仅在事件发生时才考虑startDate(与事件相关的属性).
搜索引擎必须扫描很多表,这就是为什么我认为我应该使用专用软件(Sphinx,Lucene,......?)并为搜索创建单独的索引.
有谁能建议一些建立这样一个指数的解决方案?我可以使用什么软件作为该搜索引擎的基础?
只是为了澄清:不需要任何属性.其中一些包含将使用完全匹配搜索的日期,其中一些包含也将使用完全匹配搜索的短文本(如位置).但其中一些包含很长的文本,需要以全文方式进行搜索.