实现类似于baidu的那种用空格键的分词查询
2007-06-10 16:24
260 查看
【全文】
///
/// 实现类似于baidu的那种用空格键的分词查询
///
/// 要查询表的字段集合
/// 要查询的表名
/// 查询的关键字
/// 查询的模式
/// 具体的查询语句
private string GetSearchWord(string[] tableField ,string tableName ,string strKeyword ,string strSearchMode)
{
StringBuilder strCondition = new StringBuilder();
string [] KeywordArray;
string strTemp = "";
strCondition.Append("SELECT ");
string strWhere ="";
// 获得要查询表的字段名称
foreach(string sqlField in tableField)
{
strWhere += sqlField + "," ;
}
strWhere = strWhere.TrimEnd(new char[]{','});
strCondition.Append(strWhere + " FROM "+tableName+" WHERE ");
if(strKeyword.IndexOf(',')!=-1)
KeywordArray=strKeyword.Split(',');
else
if(strKeyword.IndexOf('|')!=-1)
KeywordArray=strKeyword.Split('|');
else
KeywordArray=strKeyword.Split(null);
// 完全匹配模式
if(strSearchMode == "1")
{
strWhere="";
foreach(string sqlField in tableField)
{
strWhere += sqlField + "+";
}
strWhere=strWhere.TrimEnd(new char[] {'+'});
strTemp += strWhere + " like '%"+strKeyword+"%'";
}
else
{
// 部分匹配模式
if(strSearchMode=="2")
{
strWhere = "";
foreach(string sqlField in tableField)
{
strWhere += sqlField + "+";
}
strWhere=strWhere.TrimEnd(new char[] {'+'});
strTemp += strWhere + " like '";
strWhere="";
for (int i=0;i {
strWhere+="%"+KeywordArray[i];
}
strTemp+=strWhere +"%'";
}
// 单词匹配模式
if(strSearchMode=="3")
{
strWhere="";
foreach(string sqlField in tableField)
{
strWhere +=" "+ sqlField + "+";
}
strWhere=strWhere.TrimEnd(new char[] {'+'});
string strSqlKeyword="";
for (int i=0;i {
strSqlKeyword+=strWhere+" like" +" '%"+KeywordArray[i]+"%' or";
}
strSqlKeyword=strSqlKeyword.TrimEnd(new char[] {'o','r'});
strTemp +=strSqlKeyword;
}
}
return strCondition.Append(strTemp).ToString();
}
///
/// 实现类似于baidu的那种用空格键的分词查询
///
/// 要查询表的字段集合
/// 要查询的表名
/// 查询的关键字
/// 查询的模式
/// 具体的查询语句
private string GetSearchWord(string[] tableField ,string tableName ,string strKeyword ,string strSearchMode)
{
StringBuilder strCondition = new StringBuilder();
string [] KeywordArray;
string strTemp = "";
strCondition.Append("SELECT ");
string strWhere ="";
// 获得要查询表的字段名称
foreach(string sqlField in tableField)
{
strWhere += sqlField + "," ;
}
strWhere = strWhere.TrimEnd(new char[]{','});
strCondition.Append(strWhere + " FROM "+tableName+" WHERE ");
if(strKeyword.IndexOf(',')!=-1)
KeywordArray=strKeyword.Split(',');
else
if(strKeyword.IndexOf('|')!=-1)
KeywordArray=strKeyword.Split('|');
else
KeywordArray=strKeyword.Split(null);
// 完全匹配模式
if(strSearchMode == "1")
{
strWhere="";
foreach(string sqlField in tableField)
{
strWhere += sqlField + "+";
}
strWhere=strWhere.TrimEnd(new char[] {'+'});
strTemp += strWhere + " like '%"+strKeyword+"%'";
}
else
{
// 部分匹配模式
if(strSearchMode=="2")
{
strWhere = "";
foreach(string sqlField in tableField)
{
strWhere += sqlField + "+";
}
strWhere=strWhere.TrimEnd(new char[] {'+'});
strTemp += strWhere + " like '";
strWhere="";
for (int i=0;i {
strWhere+="%"+KeywordArray[i];
}
strTemp+=strWhere +"%'";
}
// 单词匹配模式
if(strSearchMode=="3")
{
strWhere="";
foreach(string sqlField in tableField)
{
strWhere +=" "+ sqlField + "+";
}
strWhere=strWhere.TrimEnd(new char[] {'+'});
string strSqlKeyword="";
for (int i=0;i {
strSqlKeyword+=strWhere+" like" +" '%"+KeywordArray[i]+"%' or";
}
strSqlKeyword=strSqlKeyword.TrimEnd(new char[] {'o','r'});
strTemp +=strSqlKeyword;
}
}
return strCondition.Append(strTemp).ToString();
}
相关文章推荐
- 实现类似于baidu的那种用空格键的分词查询
- [转贴]实现类似于baidu的那种用空格键的分词查询
- 原创:仿Baidu,Google查询分页技术JAVA实现
- WebGIS中兴趣点简单查询、基于Lucene分词查询的设计和实现
- sqlserver中全文检索与csw(测试版)实现分词查询测试
- 高手收集整理的baidu分词算法分析之一 查询处理以及分词技术(1)
- 仿Baidu,Google查询分页技术实现分析
- 原创: 仿Baidu,Google查询分页技术实现分析之一
- MongoDB中实现类似于SQL的like查询
- 实现类似于google,baidu的搜索提示功能,带有上下键选择功能
- 【引用】类似于京东等的搜索筛选查询功能实现,商品分类筛选
- Lucene使用单字分词及短语查询实现类似全模糊查询效果
- 实现类似于yahoo通讯录的查询
- 【lucene系列学习一】实现Lucene索引,查询以及中文分词功能
- SQL巧用逗号分隔的字符串实现类似于 where field in (a,b,c,d)的查询
- Mysql 查询实现成绩排名,相同分数名次相同,类似于rank()函数
- 利用JS+表单+php实现组装式数据查询,类似于数据库的UI
- solr实现同义词查询及分词粒度
- 仿Baidu,Google查询分页技术实现分析
- BAE+Python+Django+Wechatpy+Baidu weather api +微信订阅号 = 实现微信查询天气