documentation表明我可以通过在$ SHAREDIR / tsearch_data / english.stop(例如)中创建一个空的停用词字典来实现这一点,但这会使部署复杂化;我希望能够使用sql配置Postgresql的停止字处理。这可能吗?如果是这样,你能提供一个示例SQL语句吗?
根据您对上一个答案的评论,您可以轻松地在使用无停止词和所有停用词之间切换。您可以使用自定义搜索配置来实现此目的:
(1)您可以在不使用停用词文件的情况下创建自定义词典,例如:
CREATE TEXT SEARCH DICTIONARY english_stem_nostop ( Template = snowball,Language = english);
注意,在上面我省略了StopWords参数。
(2)然后创建一个新配置以使用新词典:
CREATE TEXT SEARCH CONfigURATION public.english_nostop ( copY = pg_catalog.english );ALTER TEXT SEARCH CONfigURATION public.english_nostop ALTER MAPPing FOR asciiword,asciihword,hword_asciipart,hword,hword_part,word WITH english_stem_nostop;
(3)然后,当搜索指定您想要使用的配置时(或者您可以每次更改default_text_search_config选项),例如:
SELECT TitleFROM articlesWHERE to_tsvector('english_nostop',COALESCE(Title,'') || ' ' || COALESCE(body,'')) @@ to_tsquery('english_nostop','how & to');
您可以在上面的sql中指定’english’来使用普通配置。
请注意,在此示例中,使用标准配置将导致通知,因为只有停用词。
但请记住以下内容:
>如果使用索引,则每个配置需要两个 – 一个。 (参见这些文档:tsearch tables和triggers)。
>根据上面的步骤#2,仔细检查要使用此映射的解析器标记(参见Parsers)。
以上是内存溢出为你收集整理的我是否可以通过编程方式配置PostgreSQL以消除全文搜索中的停用词?全部内容,希望文章能够帮你解决我是否可以通过编程方式配置PostgreSQL以消除全文搜索中的停用词?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)