我在一个项目中计划使用多关键字查询,比如,要实现我输入“大米  茶”可以查找出,信息中包含大米和茶信息,关键字之间是用空格来分隔的,请问这样的代码怎么写,sql语句怎么写,最好能有写好的代码给我参考一下,谢谢!

解决方案 »

  1.   

    sql不可能完全匹配,而且查询效率不高.
     建议用索引.如 lucene
      

  2.   

    求教Myeclipse如何选择所有代码行作为断点呢?有高手可以明示吗?谢谢了!
      

  3.   

    求教Myeclipse如何选择所有代码行作为断点呢?
    有高手可以明示吗?跪下来谢谢你了!
      

  4.   

    “大米  茶”
    先把字符串String str[] = ssss.split(" ")
    然后再like %str[0]% or like %str[1]%...
      

  5.   

    可以用 sql 语句来完成。
    借用 sql 语句的正则表达式。1.首先,你将所有的 关键词 分离出来,比如 “大米”,“茶”(我在使用时,是放在 List 中的)
    2.建立 sql 
      我们查询的原则是优先查找出既含有关键词“大米”又含有关键词“茶”的记录,
      然后再查找出分别包含有 “大米”,“茶” 等关键词的记录
     那么 
     /* 这一句是查找出包含所有关键词的记录的语句 */
     select * 
       from t_article
     where title regexp '.*(大米)+.*(茶)+.*' /* 利用 union 将两个表合起来,注意,是union 而不是 union all */
     union
     
     /* 查找出含有部分关键词的记录的语句 */
     select * 
       from t_article
     where title regexp '.*(大米)+.*'   /*同理*/
      union select * 
       from t_article
     where title regexp '.*(茶)+.*'  
     
     ...附: 我是 MySql 数据库,其他数据库也支持正则表达式,所以要先了解数据库正则表达式的语法。
      

  6.   

    可以用 sql 语句来完成。
    借用 sql 语句的正则表达式。1.首先,你将所有的 关键词 分离出来,比如 “大米”,“茶”(我在使用时,是放在 List 中的)
    2.建立 sql 
      我们查询的原则是优先查找出既含有关键词“大米”又含有关键词“茶”的记录,
      然后再查找出分别包含有 “大米”,“茶” 等关键词的记录
     那么 
     /* 这一句是查找出包含所有关键词的记录的语句 */
     select * 
       from t_article
     where title regexp '.*(大米)+.*(茶)+.*' /* 利用 union 将两个表合起来,注意,是union 而不是 union all */
     union
     
     /* 查找出含有部分关键词的记录的语句 */
     select * 
       from t_article
     where title regexp '.*(大米)+.*'   /*同理*/
      union select * 
       from t_article
     where title regexp '.*(茶)+.*'  
     
     ...附: 我是 MySql 数据库,其他数据库也支持正则表达式,所以要先了解数据库正则表达式的语法。
      

  7.   

    select * 
      from t_article 
    where title regexp '.*(大米)+.*(茶)+.*' 
    请问这里的title是不是字段名?
    我把它改成: SELECT *
               FROM t_goods
               WHERE name regexp '.*(牛)+.*(米)+.*'
    后再数据库中运行,结果报错了,错误是“regexp附近有语法错误”,请问是怎么回事呢?
      

  8.   

    这个和sql语句没关系,sql语句就类似and  or  like % _ 等等
    所以要对你的查询条件进行处理,以供支持sql语法即可
      

  9.   

    解决了,不过用的方法是将查询条件以空格分开,再放到字符串数组中,再加到SQL语句中,感觉像是投机取巧
    呵呵