java如何对一大堆字符串进行多关键词搜索,同时多关键词可以进行与或非组合关系。用正则表达式好像是一下搞不定的,请教有没有做过类似功能的。特别说明,多个关键词之间可以有括号、以及与、或、非逻辑运算符
解决方案 »
- 关于ssh Struts2.1 + Spring3.0 + Hibernate3.3的问题
- struts2 跳转页面乱码
- 纯java连接数据库问题,补丁也打了,.jar也加入了,还是有问题,大侠帮帮忙啊
- java垃圾回收剖析
- 难道真是程序导致Out Of Memory??
- 一个很简单的EJB错误:Error caching serializable object.
- [百分!!急]Javabean,用Runtime调用服务器端的一个EXE,为什么exe程序没反应
- 快来拿分
- 简单的送分问题
- 请问是什么错误
- Java Web项目中两种导入外来Jar包的区别
- Android 使用HTTP Get方式提交数据,出现response code == 400
{
if (string.IsNullOrEmpty(str))
{
return string.Empty;
}
int len = str.Length - 1;
char[] sb = str.ToCharArray();
bool isOK = true;
for (int i = 0; i <= len; i++)
{
if (keyDict.ContainsKey(str[i]))
{
int j = i;
foreach (string s in keyDict[str[i]])
{
foreach (char c in s)
{
if ( j >= len || c != str[j++])
{
isOK = false;
break;
}
}
if (isOK)
{
for (int k = i; k < j; k++)
sb[k] = '*';
i = j;
break;
}
else
{
j=i;
isOK = true;
}
}
}
}
return new string(sb);
}
这里有个高手,写的,
http://www.cnblogs.com/hlxs/archive/2012/01/31/2333278.html
这时候需要定义一个关键词表达式,比如:((CSDN&精华)|(ITEYE&精华))!精华推荐这个表达式的意思是,我要找页面上同时存在"CSDN"和"精华",或者"ITEYE"和"精华"的,但是不能有"精华推荐"的文章。搜索引擎中有比较独立的比对算法吗,能够单独抽出来调用吗?
——我要找页面上同时存在"CSDN"和"精华",或者"ITEYE"和"精华"的,但是不能有"精华推荐"的文章。你现在设计是:
——((CSDN&精华)|(ITEYE&精华))!精华推荐直接拆分为三条规则:
—— 精华推荐:有则直接判定失败。
—— CSDN 精华:有则匹配成功。
—— ITEYE 精华:有则匹配成功。程序执行时就按规则顺序检查,整体处理会简单许多。最后,为了书写便捷,可以再考虑书写时合并,比如:
!精华推荐 | CSDN 精华 | ITEYE 精华
但这样会引入新的问题,比如转义字符(假如你刚好需要匹配 感叹号 的时候)