Gem pg_search 如何搜索中文?

whitecrow · 2013年10月09日 · 最后由 mozillazg 回复于 2015年11月23日 · 4163 次阅读

使用 pg_search gem 包中的“multisearch”,只能搜索英文或数字(如 PgSearch.multisearch("tianjin"))而不能搜索中文,搜索中文会 Notice: NOTICE: text-search query contains only stop words or doesn't contain lexemes, ignored 并且不返回搜索结果。如何解决这个问题?

思路略有不对。pg_search 本身并不负责处理中文分词。

  • 思路一:安装 postgresql 插件,如 nlpbamboo 等,获得中文分词能力,然后匹配 pg_search;

  • 思路二:借助 Sphinx,调用 postgresql,做中文分词等。

要搞全文搜索建议用 Sphinx 或 Solr, Ruby Gem 有 thinking-sphinx 和 sunspot

#1 楼 @ouyang #2 楼 @huacnlee 非常感谢二位,通过 Google 磕磕碰碰走上了思路一,如果思路一走不下去就去思路二。 :D

匿名 #4 2013年10月09日

sunspot

#3 楼 @whitecrow 讲讲探索心得啊……

昨天也遇到了这个问题。我这边出现这个问题的原因是因为数据库的编码问题:

之前是 SQL_ASCII

| Encoding  |   Collate   |    Ctype    |
+-----------+-------------+-------------+
| SQL_ASCII | C           | C           |

转换为 UTF8 就可以了

| Encoding  |   Collate   |    Ctype    |
+-----------+-------------+-------------+
| UTF8      | en_US.UTF-8 | en_US.UTF-8 |
需要 登录 后方可回复, 如果你还没有账号请 注册新账号