今天遇到之前部署的全文检索昵称在查询时不能精确匹配的问题,如查询138111000,则会将1、3、8等数字全部拆分,所匹配的用户和所期望的结果不一致,存在的昵称‘用户138111000’并没在查询结果中,多次使用sphinxapi.jar进行不同参数的查询实验,最终的方案为:
(1)查询的模式为SPH_MATCH_PHRASE
(2)所查询的关键字用英文单引号括起来,再传递给服务端,这样,查询的结果就正确了
具体命令为:
java -jar sphinxapi.jar -h 192.168.1.2 -p 9312 -ph '138111000'sphinxapi.jar可使用的命令参数:
-h, --host <HOST> connect to searchd at host HOST -p, --port connect to searchd at port PORT -i, --index <IDX> search through index(es) specified by IDX -s, --sortby <CLAUSE> sort matches by 'CLAUSE' in sort_extended mode -S, --sortexpr <EXPR> sort matches by 'EXPR' DESC in sort_expr mode -a, --any use 'match any word' matching mode -b, --boolean use 'boolean query' matching mode -e, --extended use 'extended query' matching mode -ph,--phrase use 'exact phrase' matching mode -g, --groupby <EXPR> group matches by 'EXPR' -gs,--groupsort <EXPR> sort groups by 'EXPR' -l, --limit <COUNT> retrieve COUNT matches (default: 20) -ga, --geoanchor <LATATTR> <LONGATTR> <LAT> <LONG> set anchor for geodistance --select <EXPRS> select the listed expressions only