这是正常情况,分词的机制决定的。通常讲,搜索单字是不有意义的,一定有这个需求的话需要自己修改分词引擎让它支持拆为单字。 具体看 XSTokenizerScws 这节,可以自行扩展然后通过 setMulti 方法索引单字
初看上去没有什么错,建议用 util/Quest.php 配合 --show-query 选项来测试,这个比较靠谱。
搜索为了效率,计数是采用概率估算的,没有必要获取准确。 如实在有必要,可以在调用 search() 方法之前构造一个明显很大的 setLimit() 参数去调用
数组内是个对象,用json_encode是不行的,最后还是循环取出_data中的内容然后再组成数组,再json_encode。 foreach($data as $doc){ $arr[] = $doc->getFields(); } echo json_encode($arr);
搜索结果正常如下: Array ( [0] => XSDocument Object ( [_data:XSDocument:private] => Array ( [id] => 4089 [name] => 思诺尔 亚麻水立方红色1.5米 [brand_name] => 思诺尔 ...