比如说一篇新闻可以设置关键字:我 你那么他通过关键字去查询:包含"我"或者"你"的都要查出来,这样的sql怎么写呢?这应该不需要设计到什么全文搜索吧。列子,所有的新闻网站都有相关新闻。

解决方案 »

  1.   

    用split函数把这些关键字拆开
    然后构造sql,分别把这些关键字作为条件
    select * from table where txt like key1 or txt like key2 or ... 
      

  2.   

    用split函数把这些关键字拆开 
    然后构造sql,分别把这些关键字作为条件 
    select * from table where txt like key1 or txt like key2 or ... 
      

  3.   

    SQL来搜不是好的解决方案建议用 分词,建索引,然后搜索推荐 lucene.net
      

  4.   

    回帖要慎重
    人家lz连查询和索引都不太入门,你和他说反向索引,这个推荐lz一个傻瓜办法。
    让Google索引你的网站
    你嵌入一个Google的搜索框,在用户搜索内容前加site:,然后丢给Google去找。
      

  5.   


    回帖请慎重,你说的方法,我早知道,答题请对问。其实 我问的一个是要么在sql里面实现split方法。要么说下做过的人是怎么实现的。---------
    我是来求经验的。要的是一个实现方法,而不是你说的什么搜索框,
      

  6.   

    我想的:一般用当前新闻的关键字去匹配:其他新闻他标题和关键字,然后在top 8 和order by Date。
      

  7.   

    http://hi.csdn.net/link.php?url=http://blog.csdn.net%2Flihan6415151528
      

  8.   

    这头像最近很火
    不过LZ的貌似是最新版up
      

  9.   

    关于split ref:
    http://blog.csdn.net/lihan6415151528/archive/2009/08/20/4467209.aspx对不起,真的没看出lz是高手,怪我不慎重。
    用我的办法做过n回,没问题啊?lz到底有什么需求。
    提问请慎重。
      

  10.   

    没觉得你的图有什么特别的啊?
    我倒问你怎么不能实现呢?
    无非是按照时间排序下。
    另外这个图和你提问有一点不同,那就是关键字是 and 不是 or。
    而且貌似是只在标题里面找。
      

  11.   

    打个比方,不过这么做会导致SQL被注入。
    string[] keys = split(querysource, " ");
    sql = "select * from news where ";
    foreach (string s in keys)
    {
        sql += "title like '%" + s "%' and ";
    }
    sql += "1 = 1";
      

  12.   

    string[] keys = split(querysource, " "); 
    sql = "select * from news where "; 
    foreach (string s in keys) 

        sql += "title like '%" + s + "%' and "; 

    sql += "1 = 1";
      

  13.   


    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([A] int,[B] varchar(5))
    insert [TB]
    select 1,'a,3,f' union all
    select 2,'b,c,d' union all
    select 3,'c,k,u' union all
    select 4,'j,e,p'declare @s  varchar(20),@sql varchar(max)
    set @s='a,b,c'
    set @sql='select * from TB where B like ''%'+replace (@s,',','%'' or B like ''%'+'')+'%'''
    exec(@sql)StringBuilder sb= new StringBuilder();
                strbu.Append(" select * from table where");
                string[] keyArray = strKeyWord.Split(',');
                for (int i = 0; i < keyArray.Length; i++)
                {
                    if (!string.IsNullOrEmpty(keyArray[i]))
                    {
                        if (i == keyArray.Length - 1)
                        {
                            sb.Append(" keyword like " + keyArray[i] + " ) ");
                        }
                        else
                        {
                            sb.Append(" keyword like " + keyArray[i]) + " or ");
                        }
                    }
                }
      

  14.   


    http://www.codeproject.com/KB/aspnet/DotLuceneSearch.aspx?msg=2249025
    DotLucene: Full-Text Search for Your Intranet or Website using 37 Lines of Code
    使用lucene.net:37行代码实现站点全文搜索算是比较傻瓜了吧查询效率可不是sql server全文搜索能比的