首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tsvector只支持英文吗?

tsvector只支持英文吗?
EN

Stack Overflow用户
提问于 2013-01-13 13:10:16
回答 2查看 3.6K关注 0票数 3

我做了以下工作:

代码语言:javascript
复制
ALTER TABLE blog_entry ADD COLUMN body_tsv tsvector;

CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON blog_entry 
    FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger(body_tsv, 'pg_catalog.english', body);

CREATE INDEX blog_entry_tsv ON blog_entry USING gin(body_tsv);

UPDATE blog_entry SET body_tsv=to_tsvector(body);

现在,这是有效的:

代码语言:javascript
复制
SELECT title FROM blog_entry WHERE body_tsv @@ plainto_tsquery('hello world');

但是当尝试搜索非英语文本时,它根本不起作用(没有结果)。

我使用的是v9.2.2

请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-13 16:48:05

我已经有一段时间没有使用它了,但是您需要用正确的语言创建ts_vector,而不是用ts_query。

因此,在更新表时,请使用:

代码语言:javascript
复制
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);

你也可以扩展功能,使用ispell字典来使词干更好地用于文本搜索引擎(尽管它仍然不会像Solr那样复杂)

为此,请下载例如包含在OpenOffice German dictionary中的ISPELL字典

.oxt文件实际上是一个.zip文件,因此您可以简单地提取其内容。

然后将文件de_DE_frami.dic复制到PostgreSQL "share/tsearch_data“目录,同时将扩展名更改为.dict (这是PostgreSQL所期望的。

然后将文件de_DE_frami.aff复制到同一目录,将扩展名更改为.affix

要使用PostgreSQL,您需要将这两个(文本)文件都转换为-8

然后使用以下命令注册该字典:

代码语言:javascript
复制
CREATE TEXT SEARCH CONFIGURATION de_config (copy=german);

CREATE TEXT SEARCH DICTIONARY german_stem (
    TEMPLATE = snowball,
    Language = german
);

CREATE TEXT SEARCH DICTIONARY german_ispell (
    TEMPLATE = ispell,
    dictfile = de_DE_frami,
    afffile = de_de_frami
);

alter text search configuration de_config 
     alter mapping for asciiword WITH german_ispell, german_stem;

完成后,您可以使用以下命令创建ts_vector:

代码语言:javascript
复制
UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);

手册中也对此进行了描述:http://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY

票数 9
EN

Stack Overflow用户

发布于 2019-05-14 01:43:57

我知道这个问题已经有一段时间了,但我正在寻找改变FTS语言的方法,并找到了另一个解决方案。(而且比下载字典要好)

在Postgres CLI上,您可以使用以下命令获取文本搜索配置列表:\dF

  • 检查您当前的configuration:

show default_text_search_config;

  • 将文本搜索配置更改为另一种语言:

set default_text_search_config = 'pg_catalog.[language]';

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14300874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档