积极答复者
如何实现全站搜索?

问题
-
在用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
答案
-
使用专业的全文搜索方式,可以采用
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
教程,例子,下载,可以参考‘
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等完成。
像您说的这样做的前提,好像也得先判断出来你查寻的是哪个字段吧?可是,我要查的东西不确定是在哪个字段中呀. 我在别的地方找到了一个方法 其实写一个这样的SQL语句就可以
也可以都转成nvarchar类型进行like 等方法
孟宪会
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 -
那您说:像google这样的搜索引擎,它的数据库表中,总不至于只有一个字段吧?如果是有多个字段它是怎么确定用户要查找哪个字段呢?
还那我上边的UserInfo表为例,也就是我不能确定用户要从哪些方面来查找一条信息呀,他可能是查25岁的用户,也可能查姓李的用户,还有可能查分数大于100的用户,....而这些信息是储存在不同字段中的呀?
解决方法我是有,比如让用户在搜索时选择一下,根据什么查找以确定SELECT 查找哪个字段,可我要不想这样呢?不管用户输入什么,只要数据库中有,就能找到?
www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助- 已编辑 lkf18 2009年3月30日 18:06 补充
2009年3月30日 17:03 -
那您说:像google这样的搜索引擎,它的数据库表中,总不至于只有一个字段吧?如果是有多个字段它是怎么确定用户要查找哪个字段呢?
你的意思是这样的:
还那我上边的UserInfo表为例,也就是我不能确定用户要从哪些方面来查找一条信息呀,他可能是查25岁的用户,也可能查姓李的用户,还有可能查分数大于100的用户,....而这些信息是储存在不同字段中的呀?
解决方法我是有,比如让用户在搜索时选择一下,根据什么查找以确定SELECT 查找哪个字段,可我要不想这样呢?不管用户输入什么,只要数据库中有,就能找到?
www.haodd123.com 我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助
假如数据库有 id,date,age,guid,ntext等类型的字段,并且每个字段的内容里面有8这个字符,如果你输入8,你想查询出所有这些字段的内容?
孟宪会2009年3月31日 1:05版主