【问题标题】:How do I implement full text search in Chinese on PostgreSQL?如何在PostgreSQL上实现中文全文搜索?
【发布时间】:2011-04-29 00:19:38
【问题描述】:

以前有人问过这个问题:

Postgresql full text search in postgresql - japanese, chinese, arabic

但据我所知,没有中文的答案。我看了一下 OpenOffice wiki,它没有中文字典。

编辑:由于我们已经成功地将 PG 的内部 FTS 引擎用于英文文档,我们不想转移到外部索引引擎。基本上,我正在寻找的是中文 FTS 配置,包括简体中文(普通话)的解析器和字典。

【问题讨论】:

  • 由于我们无法找到解决方案(即使有我提供的赏金),我们最终转移到了原生支持中文 FTS 的 SQL Server。幸运的是,我们的应用程序被设计为与数据库供应商完全无关,所以这对我们来说不是一个大问题。

标签: postgresql localization full-text-search cjk


【解决方案1】:

使用 Solr 为您的数据建立索引,它是基于 Lucene 构建的开源企业搜索服务器。

您可以在此处找到有关 Solr 的更多信息:

http://lucene.apache.org/solr/

一本关于操作方法的好书(立即下载 PDF):

https://www.packtpub.com/solr-1-4-enterprise-search-server/book

并且一定要使用中文分词器,例如 solr.ChineseTokenizerFactory,因为中文不是空格分隔的。

【讨论】:

  • 我们需要使用 Postgres 内置的 FTS 引擎。我们已经成功实施了英文 FTS,并希望继续使用相同的系统处理中文文档。
  • 哦,我明白了。好吧,那我的回答对你没有帮助。自您发表原始帖子以来,我看到了您对该问题的澄清/编辑。我不确定您的时间线将适应什么,但 Solr 解决方案是开源的。您也许可以从 ChineseTokenizerFactory 借用——它的逻辑克服了我理解的固有问题,即语言没有空格分隔。祝你好运。
【解决方案2】:

我刚刚在 PostgreSQL 中实现了一个中文 FTS 解决方案。我通过从中文输入创建 NGRAM 令牌,并使用嵌入式函数创建必要的 tsvectors 来做到这一点(在我的例子中,我使用了 plpythonu)。它运行良好(比迁移到 SQL Server 更可取!!!)。

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,但有一个 Postgres 中文扩展:https://github.com/amutu/zhparser/

    【讨论】:

    猜你喜欢
    • 2021-10-24
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2010-10-03
    相关资源
    最近更新 更多