2010-10-22 71 views
10

这个问题已经被问过:如何在PostgreSQL上实现中文全文搜索?

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

但也有中国没有答案,据我所看到的。我看了一下OpenOffice的wiki,并没有中文字典。

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

+0

我们无法找到一个解决方案(即使我提供的奖金),我们最终转移到SQL Server,它本身就支持中国FTS。幸运的是,我们的应用程序被设计为相当数据库供应商不可知论者,所以这对我们来说不是一个大问题。 – 2010-12-20 10:35:48

回答

3

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

+0

我得到'文本搜索查询只包含停用词或不包含词位,忽略'问题。请参阅https://stackoverflow.com/questions/41659909/fts-non-latin-text-search-query-contains-only-stop-words-or-doesnt-contain-lex – Growler 2017-01-17 15:33:53

2

使用Solr为您的数据建立索引,它是一个建立在Lucene之上的开源企业搜索服务器。

您可以在Solr的找到更多的信息在这里:

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

一本好书,就如何对(立即用PDF下载)位置:

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

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

+0

我们需要使用内置于Postgres中的FTS引擎。我们已经成功实施英文FTS,并希望继续使用相同的系统来处理中文文档。 – 2010-10-24 23:10:55

+1

哦,我明白了。那么,我的回答对你没有帮助。我从你原来的帖子看到你对这个问题的澄清/编辑。我不确定你的时间表是否适合,但Solr解决方案是开源的。你*可能*能够借用ChineseTokenizerFactory - 它的逻辑克服了我所理解的固有问题,即语言不是空白的。祝你好运。 – 2010-10-25 14:14:08

3

我刚在PostgreSQL中实现了一个中文FTS解决方案。我通过从中文输入创建NGRAM令牌来实现这一点,并使用嵌入式函数创建必要的tsvector(在我的例子中,我使用plpythonu)。它工作得很好(大量移动到SQL Server !!!)。

+3

你能分享你的代码吗? – Evgeny 2013-02-10 17:54:19

+0

是的,请做! – 2013-10-13 16:10:48

相关问题