因为不能用SPH_MATCH_ANY,所以使用SPH_MATCH_EXTENDED模式!
但是出现的问题是
记录中有标题为“埃丽卡第一季”的记录,但是如果用1方式
埃|丽|卡|第一|季(| 两边没有空格)
返回的内容是:
serach failed: received zero-sized searchd response.
如果用2方式
埃 | 丽 | 卡 | 第一 | 季 (| 两边有空格)
返回的内容是(部分内容) ["error"]=> string(0) "" ["warning"]=> string(0) "" ["status"]=> int(0) ....... ["total"]=> string(1) "0" ["total_found"]=> string(1) "0" ["time"]=> string(5) "0.007" ["words"]=> array(5) { ["埃"]=> array(2) { ["docs"]=> string(3) "359" ["hits"]=> string(3) "442" } ["丽"]=> array(2) { ["docs"]=> string(4) "2701" ["hits"]=> string(4) "3174" } ["卡"]=> array(2) { ["docs"]=> string(4) "1906" ["hits"]=> string(4) "2342" } ["第一"]=> array(2) { ["docs"]=> string(4) "8407" ["hits"]=> string(4) "8808" } ["季"]=> array(2) { ["docs"]=> string(5) "19327" ["hits"]=> string(5) "22651" } }
这下面命中这么多,返回却是0匹配,类似这样的查询还有很多,就不列举了,现在只能用ALL模式,不知道上面的问题怎么解决?
我测试的结论是第1种方式可以检索至少符合一个的内容,就是any模式
第2种方式好像还是all模式(或者潜在的还找了空格字符,这是猜测),因为我发现1种方式和2种方式返回的命中都一样,但是加了空格以后就不会出现正确结果,不加空格就会出现正确结果(没有返回serach failed: received zero-sized searchd response. 这个错误的前提下)
另外,用or(即|)模式的话,和关键词应该怎么隔开?不分割就会出现1的问题,用空格分隔就出现2的问题,用双引号就报错,单引号不报错但会出现包含单引号的内容。。。。 |