locked
如何实现全站搜索? RRS feed

  • 问题

  •       在用SQL Server的 存储过程 和ACCESS 组合SQL 语句来做分页时,有一项功能我比较有兴趣:就是搜索查寻的功能。
          可是,它只能实现对某个字段进行查寻如:(以UserInfo表为例)
    SELECT [UserName] FROM [UserInfo] WHERE [UserName] LIKE [@UserName]
           也就是说它一次只能对 用户名 进行查寻,而要想查 用户年龄等就不行了!
        我道是也想了个办法:就是再增加一个字段:searchKey 把其他字段的东西都装在这个字段里,然后用:
    SELECT [UserId] FROM [UserInfo] WHERE [searchKey ] LIKE [@searchKey ]
    来确定所要查找的某条或多条信息。

         可是后来又想了一下:我这个只是对UserInfo表,数据量不大,可以无所谓,但要是其他表呢?那数据量会成倍地增加呀!
        我这么做合理么?大狭们有什么好方法?

    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    2009年3月29日 7:00

答案

全部回复

  • SharePoint……Google站内搜索……
    MSMVP VC++
    2009年3月29日 13:01
    版主
  • 使用专业的全文搜索方式,可以采用
    Lucene.Net

    教程,例子,下载,可以参考‘

    http://www.google.com/search?q=Lucene.net&rls=com.microsoft:zh-cn:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7ADBF


    即使不是使用Lucene.Net ,查询 用户年龄 也无需添加字段啊,你在存储过程里面进行判断,写if else等完成。
    也可以都转成nvarchar类型进行like 等方法
    孟宪会
    • 已标记为答案 lkf18 2009年3月31日 8:29
    2009年3月29日 13:38
    版主
  • 即使不是使用Lucene.Net ,查询 用户年龄 也无需添加字段啊,你在存储过程里面进行判断,写if else等完成。
    也可以都转成nvarchar类型进行like 等方法
    孟宪会
    像您说的这样做的前提,好像也得先判断出来你查寻的是哪个字段吧?可是,我要查的东西不确定是在哪个字段中呀. 我在别的地方找到了一个方法 其实写一个这样的SQL语句就可以
    SELECT * FROM [UserInfo] WHERE [UserName] like [@Keyword] or [Age] like [@Keyword] or [Address] like [@Keyword]
    先去试试
    Lucene.Net 对于我来说好像有点复杂,呵呵以后再研究吧.
    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    2009年3月30日 12:32
  • 你都不知道哪个字段你还怎么查啊,字段总是在设计的表的字段之内的。你要查询东西,总是要传递字段进来的。


    孟宪会
    2009年3月30日 13:46
    版主
  •      那您说:像google这样的搜索引擎,它的数据库表中,总不至于只有一个字段吧?如果是有多个字段它是怎么确定用户要查找哪个字段呢?

        还那我上边的UserInfo表为例,也就是我不能确定用户要从哪些方面来查找一条信息呀,他可能是查25岁的用户,也可能查姓李的用户,还有可能查分数大于100的用户,....而这些信息是储存在不同字段中的呀?

        解决方法我是有,比如让用户在搜索时选择一下,根据什么查找以确定SELECT 查找哪个字段,可我要不想这样呢?不管用户输入什么,只要数据库中有,就能找到?

    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    • 已编辑 lkf18 2009年3月30日 18:06 补充
    2009年3月30日 17:03
  • google搜索不是采用数据库的方法。其它搜索引擎也不是采用数据库做的
    孟宪会
    2009年3月31日 1:03
    版主
  •      那您说:像google这样的搜索引擎,它的数据库表中,总不至于只有一个字段吧?如果是有多个字段它是怎么确定用户要查找哪个字段呢?

        还那我上边的UserInfo表为例,也就是我不能确定用户要从哪些方面来查找一条信息呀,他可能是查25岁的用户,也可能查姓李的用户,还有可能查分数大于100的用户,....而这些信息是储存在不同字段中的呀?

        解决方法我是有,比如让用户在搜索时选择一下,根据什么查找以确定SELECT 查找哪个字段,可我要不想这样呢?不管用户输入什么,只要数据库中有,就能找到?

    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    你的意思是这样的:
    假如数据库有 id,date,age,guid,ntext等类型的字段,并且每个字段的内容里面有8这个字符,如果你输入8,你想查询出所有这些字段的内容?

    孟宪会
    2009年3月31日 1:05
    版主
  • google搜索不是采用数据库的方法。其它搜索引擎也不是采用数据库做的
    孟宪会

            搜索不是采用数据库!!?? 我的天!您又钩起我的好奇心了!呵呵,那它那么庞大的数据用什么处理呀?听说google一天要处理2000T的数据呢! 对了,一天2000T!!!那得多大的硬盘呀!有那么大的硬盘么?他们用的应该是大型计算机吧?
    www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
    2009年3月31日 8:51
  • 我也遇到这个站内搜索的问题了 
       我数据库中的表有几十个,
      那怎么连接起来查询啊?
    2009年6月18日 3:01