select `photo`.`p_title`,`user`.`title`,`user_word`.`pw_title` from user,photo,`user_word`;这个样子能用在SSH的项目中吗?那站内搜索是如何做的呢?就是一张表搜索吗?哪很简单;
有连接的表,我也能搜索,但是没有连接的表与表,改怎么办啊?上面我的SQL语句就是没有关系的3张表,显示的数据乱了,单独每张表的记录都没有那么多的,这样查询的话,表记录很多很多,都是重复的还有。哪大家的站内搜索都是怎么做的呢?小弟请教了啊!!!!

解决方案 »

  1.   

    你的问题是数据库查询的笛卡儿积积问题在做查询时,出现笛卡儿积,一般是你的where条件考虑不够全面。  而你说三个表之间没有一点关系:
      那只要你做多表查询,必然出现笛卡儿积!     
     
     除了要用where条件来限制(或者过滤)笛卡儿积。用索引提高查询速度。 建议你把限制关系写一下,就算不是表与表之间的关联限制,总有一些条件限制吧  
      

  2.   

    怪我没有说清楚,不好意思啊!SSH的多表查询:::(1)写一个公共的DAO层,对几张表进行模糊查询,暂时不考虑分页。 
    (2)Service调用,没什么好说的; 
    (3)写一个Action类,对这几张表的Service进行全部的调用。 
    (4)在显示层里,有多少张表,就写多少个logic进行循环的显示。 
    (5)在显示层里,针对具体的那个,我在这是这么处理的,需要再写方法,针对每张表进行处理;我考虑的是 
    如果写一个方法,那恐怕有难度,因为表的名字和ID都是不一样的,我无法做到动态的传输参数,所以只好针对每张表进行 
    处理了; 这是我搜索的方法吧,我用的是3张表,他们之间都是有联系的,我就是按照没有关系的表进行处理,针对每张表进行模糊查询, 
    然后在前台显示;不知道这样的搜索有效率吗?大家都是怎么做搜索的呢?做网站内的搜索,是“站内搜索”的那种啊。 
      

  3.   

    Lucene,基于java的全文搜索引擎