Sphinx配置:如何让搜索时将连字符"-"视为普通符号?
解决Sphinx搜索命令行选项时连字符被忽略的问题
Sphinx默认的文本分词器会将连字符(-)视为词分隔符,导致--run、--start-program这类命令行选项被拆分解析,进而出现无关搜索结果。以下是具体解决步骤:
1. 在Sphinx配置文件(conf.py)中自定义分词器
通过修改Whoosh的分词规则,让连字符被当作普通字符纳入单词匹配。在conf.py中添加以下代码:
from whoosh.analysis import RegexTokenizer, LowercaseFilter, StopFilter from whoosh.lang.porter import StemFilter def custom_analyzer(): # 正则规则匹配包含连字符的连续单词,适配命令行选项格式 tokenizer = RegexTokenizer(r"\w+(-\w+)*") # 保留原有的小写转换、停用词过滤、词干提取逻辑 return tokenizer | LowercaseFilter() | StopFilter() | StemFilter() # 配置搜索使用自定义分词器 html_search_options = { 'analyzer': custom_analyzer() }
2. 重新构建文档
修改配置后,执行文档构建命令(如make html),让新的分词规则生效。
完成以上操作后,搜索--run或--start-program时,连字符会被当作选项的一部分完整匹配,不会再出现拆分后匹配到"starting"这类无关内容的情况。
内容的提问来源于stack exchange,提问作者Ashark
相关产品推荐
相关产品推荐

