日期:2014-05-18  浏览次数:20410 次

@@@@@@@@@@csdn的高人们帮我一下,我有一个小问题,困扰很久!!!@@@@@@@@@@@@
一个搜索方面的问题,最近做了一个项目,用到搜索功能,我原先作的搜索是对每一个字段而言,现在有一个要求,比如说搜索客户名称-“中国大型重工建设有限公司”,输入“大型重工”能够查询到,
问题1:现在要求输入关键字“大型   建设”,注意在中间有一个空格和没有空格的情况下都能搜索到该客户名称???
问题2:如果还有一个客户名称比如说:中国大型石化重工储备有限公司,那么在输入“大型重工”关键字时能够将这两个客户名称都检索出来,如何实现???
问题3:还有一个高级搜索,我是用datagrid绑定的,如何才能将匹配关键字高亮显示在datagrid中???(前面的简单搜索,能够实现高亮)
由于我现在只能实现最简单的搜索,还希望各位csdn的朋友能帮我一下????
在此先谢过了!!!

------解决方案--------------------
把输入的字符串例如 "大型 建设 "前后去除空格,再把该字符串用空格作分隔符,分隔完毕后将数值存到数据中.

string sqllike= " ";
for (string i=0,i <=数组.count;i++)
{
sqllike+= " like '% " + 数组0 + "% ' ";
}
string sql;
sql= "select * from youtb where field " + sqllike;

------解决方案--------------------
第一个问题:中间有空格的可以根据空格符进行分割,然后在拼接字符串。。。去掉空格。
第二个问题:在sql搜索的时候可以这样写。。。
select * from yourtable where field like '%大型重工% ' or field like '%大型%重工% '
------解决方案--------------------
我能想到的办法是建一个视图,然后先找符合3个关键字的,把搜索记录放到视图中,接着搜索符合两个关键字的,依次类推....最后select视图就ok
------解决方案--------------------
这个问题太深奥了,也太不好解决了
这是分词问题

------解决方案--------------------
用split来取值,然后再用sql过滤功能
------解决方案--------------------
第二个问题:
必须建一张表专门存关键字的对应关系,查询的时候先比对关键字表,这样才有可能做到通过 "大型重工 " 找到 "大型 "、 "重工 "这两种关键字
------解决方案--------------------
要用到分词技术了.建词库