首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql使用自定义停用词列表创建搜索配置

Postgresql使用自定义停用词列表创建搜索配置
EN

Stack Overflow用户
提问于 2017-12-19 02:01:05
回答 1查看 985关注 0票数 3

对于特定的全文搜索,我需要修改标准的stopword文件并排除一些单词。到目前为止,我所做的:

german.stop复制到german_modified.stop,然后从german_modified.stop中删除单词。然后:

代码语言:javascript
复制
CREATE TEXT SEARCH DICTIONARY public.german_nostop (
   TEMPLATE = pg_catalog.simple,
   STOPWORDS = german_modified
);

CREATE TEXT SEARCH CONFIGURATION public.german_nostop (
   COPY = pg_catalog.german
);

ALTER TEXT SEARCH CONFIGURATION public.german_nostop
   ALTER MAPPING
      FOR asciiword, asciihword, hword_asciipart, hword, hword_part, word
      WITH german_nostop;

CREATE INDEX body_idx ON comments
   USING gin (to_tsvector('german_nostop', body));

但当我这么做的时候

代码语言:javascript
复制
SELECT body, autor
FROM comments
WHERE to_tsvector('german_nostop', body) @@ to_tsquery('wie');

我得到了:

代码语言:javascript
复制
NOTICE:  text-search query contains only stop words or doesn't contain lexemes, ignored
NOTICE:  text-search query contains only stop words or doesn't contain lexemes, ignored
NOTICE:  text-search query contains only stop words or doesn't contain lexemes, ignored
 body | autor
------+-------
(0 rows)

'wie'是我从修改的停用词列表中删除的词。出于某种原因,PostgreSQL没有使用新的非索引字表。我真的不想修改原始的,因为我确实想使用原始的其他搜索。

EN

回答 1

Stack Overflow用户

发布于 2017-12-19 15:44:29

您忘记将文本搜索配置添加到to_tsquery呼叫。

你应该这样写:

代码语言:javascript
复制
to_tsquery('german_nostop', 'wie')

to_tsquery还删除了停用词,因为它默认使用german配置,所以删除了'wie'

如果希望将新的文本搜索配置设置为默认设置,可以将default_text_search_config设置为german_nostop

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

https://stackoverflow.com/questions/47873990

复制
相关文章

相似问题

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