使用 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
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 |