`
Raecoo
  • 浏览: 2415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Thinking-sphinx 的中文支持

阅读更多
一直以来项目中使用的都是ultrasphinx插件做为Sphinx的接口,效果也还不错,不过一直不太喜欢ultrasphinx索引的定义方式,怎么看怎么别扭(个人习惯), 相比之下还是看thinking-sphinx顺眼些.

thinking-sphinx自身是支持utf8, 不过打了中文补丁的Sphinx编码需要设置为zh_cn.utf8,但thinking-sphinx目前并没有自定义的扩展,所以就需要hack一下, 主要为中文检查添加了两个option:
引用
charset_type: zh_cn.utf-8
charset_dictpath: dict/path

使用时只需要在sphinx.yml里做相应设置即可.

hack后的插件地址为: http://github.com/raecoo/thinking-sphinx-chinese
为了支持中文对以下三个文件进行了hack,目前看起来即使升级新版本也应该不会有什么影响.
引用
lib/thinking_sphinx/configuration.rb
vendor/riddle/lib/riddle/configuration/index.rb

对以上两文件的修改主要是为了添加charset_dictpath这个自定义的变量,方便生成配置文件时使用

引用
lib/thinking_sphinx/source.rb

source.rb的utf8?方法是修改的重点,此方法仅对utf-8编码进行判断. 此方法的作用是为生成的sphinx配置文件中SQL语句部分关于编码设置的一条语句. 特别是针对中文此语句也是最为重要的一句,相信遇到过编码问题的人一看就明白
引用
sql_query_pre = SET NAMES utf8


共修改了三个文件, 添加的字符数也不到50个即可解决TS的中文检索.
分享到:
评论
5 楼 Raecoo 2009-10-16  
yangzhihuan 写道
关键在于sphinx的配置文件里加上了
charset_type: zh_cn.utf-8
charset_dictpath: dict/path
就可以啦,貌似除了生成配置文件之外,中文搜索跟TS没啥关系,真正有关系的是sphinx引擎.


请用原生TS尝试你说的方法后再回复
4 楼 yangzhihuan 2009-10-16  
关键在于sphinx的配置文件里加上了
charset_type: zh_cn.utf-8
charset_dictpath: dict/path
就可以啦,貌似除了生成配置文件之外,中文搜索跟TS没啥关系,真正有关系的是sphinx引擎.
3 楼 saberma 2009-10-14  
是的,TS更新还是很快
不过,我现在用ferret了
2 楼 Raecoo 2009-10-14  
嗯,你之前做的那个版本也有试过,一朋友在生产环境用的也是你那个版本,不过最近TS更新了几个我比较关心的功能所以就又动手搞了一下,好在修改的地方不会影响到核心功能
1 楼 saberma 2009-10-14  
不错,我以前也实现过
http://github.com/saberma/thinking-sphinx/commits/v0.9.5chinese

把uni.lib放到rails项目的lib更方便管理
修正ts 0.9.5版本delta update不生效的问题

相关推荐

    thinking-sphinx, activerecord/Rails的Sphinx插件.zip

    thinking-sphinx, activerecord/Rails的Sphinx插件 ThinkingThinking是将ActiveRecord连接到Sphinx完整文本搜索工具的库,并与 Rails ( 但也适用于其他 ruby 网络框架) 紧密集成。 当前版本为 v3.4.2.插件升级升级时...

    Laravel开发-laravel-scout-sphinx

    6. **实时搜索**:Sphinx支持实时索引,这意味着一旦数据发生变化,搜索结果几乎可以立即反映出这些变化。 7. **排序与过滤**:Sphinx支持基于权重的排序,以及复杂的过滤条件,可以通过Scout API轻松实现。 通过`...

    Laravel开发-laravel-sphinx

    2. **模型支持**:laravel-sphinx支持Laravel的模型系统,允许开发者直接在模型类上定义搜索方法,实现模型数据的快速搜索。这样,开发者可以像操作Eloquent模型一样操作Sphinx索引。 3. **实时索引更新**:laravel...

    Thinking-Sphinx:ActiveRecordRails的Sphinx插件

    虽然 `Sphinx` 默认支持英文,但通过配置可以处理其他语言的全文搜索,例如中文。`Thinking-Sphinx` 提供了对多语言的支持,但需要配合其他库(如 `riddle`)来处理分词。 总结来说,`Thinking-Sphinx` 是一个强大...

    python3-sphinx-theme-alabaster-0.7.9-7.el8.noarch.rpm

    官方离线安装包,亲测可用

    python-sphinx-doc-1.6.2-3.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    PyPI 官网下载 | nextstrain-sphinx-theme-2021.4.tar.gz

    《PyPI官网下载的nextstrain-sphinx-theme-2021.4.tar.gz解析与应用》 在Python的生态系统中,PyPI(Python Package Index)是最重要的资源库,它为开发者提供了海量的开源库和模块,方便他们进行项目开发。今天...

    Python库 | gcp-sphinx-docfx-yaml-0.3.0.tar.gz

    1. **YAML配置集成**:该库支持Sphinx和DocFX之间的YAML配置文件共享,使得在两个系统之间切换变得更加平滑。 2. **GCP文档风格**:通过使用此库,开发者可以遵循GCP的文档样式和规范,确保文档的一致性和专业性。 ...

    PyPI 官网下载 | robotpy-sphinx-plugin-0.1.2.tar.gz

    RobotPy-Sphinx-Plugin是专门为RobotPy项目设计的一个Sphinx扩展插件,旨在帮助开发者更便捷地创建与RobotPy相关的文档,提供特定的文档结构和样式支持,增强代码的可读性和项目的可维护性。 接下来,我们触及到...

    PyPI 官网下载 | sunpy-sphinx-theme-1.0.4.tar.gz

    标题中的"PyPI 官网下载 | sunpy-sphinx-theme-1.0.4.tar.gz"揭示了我们正在处理一个从Python Package Index (PyPI) 下载的软件包,名为 "sunpy-sphinx-theme",版本号为1.0.4,其存储格式是tar.gz压缩文件。...

    python2-sphinx-1.6.5-1.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    PyPI 官网下载 | gmic-sphinx-0.0.1.tar.gz

    或者,如果库支持wheel格式,用户可以直接用pip从PyPI下载并安装: ```bash $ pip install gmic-sphinx ``` 在安装过程中,Python会解析`setup.py`脚本,该脚本定义了项目的信息(如名称、版本、作者等)以及如何...

    Atom-language-sphinx,Atom的Sphinx语法包。贡献Siko1056/语言.zip

    Atom-language-sphinx是一款专为Atom文本编辑器设计的插件,它提供了对Sphinx文档语法的高亮和支持。Atom是一个由GitHub开发的免费且开源的文本编辑器,它利用了现代Web技术,如HTML、CSS和JavaScript,为开发者提供...

    Atom-sphinx-preview,原子中的狮身人面像预览。为DLDL/Sphinx做出贡献.zip

    Atom-sphinx-preview是针对Atom文本编辑器的一个插件,它主要服务于使用Sphinx文档生成工具的用户。Sphinx是一款强大的文档编写工具,广泛用于创建结构化的、清晰的技术文档,尤其在Python社区中非常流行。Atom-...

    Python库 | travis-sphinx-2.2.1.tar.gz

    `travis-sphinx-2.2.1.tar.gz` 是一个与 Python 相关的库,主要用于文档构建和自动化测试。这个压缩包包含了 `travis-sphinx` 的 2.2.1 版本,这是一个集成 Travis CI(持续集成服务)和 Sphinx(文档生成工具)的...

    python3-sphinx-argparse-0.2.2-8.el8.noarch.rpm

    离线安装包,亲测可用

    python-sphinx-theme-alabaster-0.7.9-1.el7.noarch.rpm

    官方离线安装包,亲测可用

    Laravel开发-sphinx-search-laravel

    本项目“Laravel开发-sphinx-search-laravel”就是针对Laravel框架集成Sphinx Search的一个实现,主要涉及Laravel的Sphinx搜索容器绑定和配置。 首先,要理解Laravel的依赖注入和容器。Laravel的依赖注入容器是框架...

    python27-python-sphinx-1.1.3-9.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    pytest-sphinx:pytest的sphinx doctest插件

    特征支持testcode和testoutput指令支持testsetup和testcleanup的计划(欢迎拉动请求) 支持从pytest.ini解析全局选项标志( doctest_optionflags ) 在testoutput支持:options: 为支持:skipif:在testcode和test...

Global site tag (gtag.js) - Google Analytics