设计一个智能解答系统。用户在前端输入搜索的问题,智能推荐解答问题的方法。我的设计是三张表  一张问题、答案表;一张关键字表;一张问题和关键字对应关系表。如下图:查找问题时先将问题进行分词,然后到关键字表查找关键字的id然后到问题关键字对应表中查找和关键字的对应关系,然后找到和所提供的关键字对应最多的问题 进而找到最优的问题ID靠前展示给用户。面试官说这样的设计不合理。请问怎么才算合理?面试智能

解决方案 »

  1.   

    结果表是肯定需要的,有ID,Result,keys三个字段,每个Result都可以手动或通过程序自动抽出关键字,然后将关键字集合放入keys字段,然后搜索时只要将搜索的字符串抽出关键字与keys中集合元素对比就行了,一张表就行了。
      

  2.   

    如果一定要拆分的话就按楼主那样三张表,但不需要存储问题字段,
    三张表:RID,Result  |  RID,KID | KID,Key
      

  3.   


    集合元素比对如何索引?没有索引全表扫描么?
    我觉得LZ的设计比较合理,不知道面试官是怎么想的。细节上就是匹配度算法和分词算法等等算法的差异可能会影响准确度,但是基本思路的觉得LZ还是很合理的
      

  4.   

    求你的Navicat新版 Crack补丁
      

  5.   

    http://pan.baidu.com/s/1BWSQB 32 和 64 的都有
      

  6.   

    如果使用3张表,可以考虑成多对多的关系。即问题将关键字和问题的答案设计成为many-to-many。至于1楼所说的使用1张表,个人觉得不是好的解决方法。