You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:04:55