最近组里同事开发项目时遇到一个Sphinx的问题,表面上看起来没有问题的代码,实际运行时却总是无法的到正常的结果。
我看了一下,主要的代码片段如下:
遇到的情况却是标题里的高亮显示没有问题,但是介绍里的高亮却总是没有办法出来。
经过反复调试,发现和参数传递,过程处理,字符编码都没有关系,得到的结果在第二句search_highlight处理时总是固执的没有任何变化。
后来又把问题放在了参数设置上,将single_passage、exact_phrase两个参数去掉,替换before_match、after_match,都没有得到任何的成效。
一筹莫展时,突然看到了around这个参数,一般我们都设置为3,而这里设置为30,把这个参数改一改试试,发现It works!
经过调试,发现around值为25的时候能满足功能和产品的需求。
这个问题可能是Sphinx的一个bug,在某些特定条件下高亮的截取会失败,在有时间的时候我会阅读源码来调查这个问题的产生根源。