来源:ITPOW(www.itpow.com)
定义
在搜索词中空格代表和,加号代表或,减号代表否,忽略大小写与中英文符号区别,不考虑括号和引号。
当我们从客户端获取搜索词后,要将空格替换成SQL语句认为的and,加号替换成or,减号替换成not,如果用户的输入合乎语法,那么就挺简单的,直接替换就行了,可是用户的输入往往不合乎语法,这就需要“规范搜索词”。
搜索词不规范(不合乎语法)不外乎两种情况:两端出现谓词、连续出现谓词。比如“+中国 四川”,这个搜索词中,第一个谓词“+”就是不合法的。再比如“中国 +-+四川”,中间连续出现了四个谓词,只能取一个,假设我们只认最先出现的那个。
开始我的想法是一遍实现“规范搜索词”,可是不便于理解,所以我分了两步走,第一步去除搜索词两端的谓词,第二步处理相邻的谓词。
看下面的示例(VBScript语言),程序将“-中国 +农业-发展+ +”修正为了“中国 农业-发展”
连载一结束