300分吐血求购基于关键词的字符串检索(300分)

  • 主题发起人 主题发起人 品雪
  • 开始时间 开始时间

品雪

Unregistered / Unconfirmed
GUEST, unregistred user!
1、输入规则:空格分开代表或,&分开代表与,()优先,""代表一个字
2、示例:
cvs pvcs vss代表只要有三个字中的任何一个即可
cvs&linux&internet代表必须三个都存在
("cvs for win" "cvs for linux")&internet代表"cvs for win"或"cvs for linux"两
个字中的任何一个存在,且internet存在才符合检索条件。

注意,一定要源码,最好是php3的。
 
太困难了,有兴趣跟进一下看大虾们如何说。
 
可不可以去当几个parser控件根据字符串构造sql语句,自己写好象也不难,
买本数据结构的书(如清华翻译的那本),建2个堆栈来处理,一个存操作符,一个存字符串。
 
原理俺大概也知道,只是写起来挺麻烦的,而且肯定有大虾已经写过了,俺就愉下懒了。^_-
 
要不去down几个可进行表达式计算的计算器控件,看一看Source。
 
表达式解释而已,so easy!
编译原理学过么?没有?
数据结构学过么?没有?

如果有空就帮你作了。。。。
 
这个有什么难的,
解析表达式后应该得到基本元素组成的序列,然后替换:

字符串 => 'Field Like ''%'''+字符串+'''%'''
'&' => 'and'
' ' => 'or'
'(...)' => 不变

我想大家都认为<B>表达式解析</B>很难吧?
不用怕,随便找一本数据结构的书,看看里面表达式计算的例子,
看懂了,这个问题就很简单了。



严格地说,表达式解析属于编译原理的问题,

定义语法集如下:(不太严格,马马乎乎说明一下吧)
[表达式]={['('+字符串+')']}
[表达式]={[表达式]+[运算符]+[表达式]}
[表达式]={[字符串]}
[运算符]={[与],[或]}
[与]={'&amp;'}
[或]={' '}

解析的过程就是按照语法集中的定义将原始表达式不断替换为基本元素的过程,
如果在解析过程中出现无法替换的成分,表示表达式错误。

所以关键在于定义正确的语法集,定义完成后解析程序是很好写的
 
You can find it in SQL Programe
 
it's too easy.

字符串 => 'Field Like ''%'''+字符串+'''%'''
'&amp;' => 'and'
' ' => 'or'
'(...)' => 不变
 
在www2.cs.uestc.edu.cn的FTP服务器中有一留言板的程序,为PHP3的。可以达到你的要求.
 
不行呀,你给的这个地址俺连上,换了几个代理也不行。
能给放到国内来吗?
 
有趣,want a chinese query?
 
end or continue?
 
接受答案了.
 
后退
顶部