PHP / MYSQL网站全文搜索查询带过滤器

时间:2015-05-05 12:09:31

标签: php mysql database full-text-search concept

对于我正在进行的项目,我有一个概念性编程/数据库(PHP / MYSQL)问题。只是想知道是否有人可以帮助解决方案。我已经绞尽脑汁试图找出解决这个问题的最佳方法,并且我很确定我到处寻找答案。

由于该概念属于其他人的财产,我无法对该网站的具体内容特别啰嗦。但我会尝试解释我能做些什么......

我有一个涉及快速查询大量数据的项目。我们至少谈论了200万条记录......这本身并不是一个大问题,但我需要查询这些数据并与之交互的方式是。

将以下内容作为此站点的示例工作流程。

  

1)用户访问网站

     

2)用户登录

     

3)用户点击'随机'链接 - 有点像谷歌'我感觉幸运'

     

4)用户随机显示数据库中他/她的项目   数据库中2Mil +项目列表之前没有看到。这应该能够按项目位置/类型进行过滤。

     

5)用户提供反馈'在显示的项目上,然后单击下一步

     

6)显示表格中的下一个随机项目并重复该过程

存储200万条记录并不是问题所在。真正的问题是,如何保存反馈数据,以便从那时起不为该特定用户包含在Generate Link系统中。

也就是说,我将如何以这样的方式执行此操作,即用户不必在项目之间等待很长时间才能完成查询。我知道Splits和Joins可以使用,但是当我尝试它时,这似乎仍然不是很快。

以100%清除为例,这是我在停止研究之前最接近解决方案的问题。

比方说我们有五个表:

item_list
- ItemId (int, inc, PK)
- ItemName (varchar)
- ItemCity (int, rel)
- ItemCountry (int, rel)

item_city
- LocationId (int, inc, PK)
- LocationName (varchar)

item_country
- LocationId (int, inc, PK)
- LocationName (varchar)

user_list
- UserId (int, inc, PK)
- UserName (varchar)

user_input
- InputId (int, inc, PK)
- UserId (int, rel)
- ItemId (int, rel)
- ItemFeedback (text)

当用户对item_list中的项目提供反馈时,会在user_input表中添加一条记录,其中包含相关的UserId和ItemId。 然后,我可以在user_list上对select_input表中的ItemId 进行选择。 这对我来说是一个不好的方式。如果你有2百万个项目,那么在user_input表中有1个用户有2个mil记录,如果他完成每个项目...但是,如果每个用户都提供反馈,我希望至少50个用户相当于1亿条记录每个项目。逗号分隔的值列表也是如此。

我只是不知道如何在没有大量减速或延迟的情况下实现这一目标,只要您从用户那里获得1000多条反馈。

我真的希望这是有道理的,如果您有任何问题请告诉我,我会尽力回答。

由于 -Dave

0 个答案:

没有答案