Postgres 对单词的全文搜索,而不是词素

Mor*_*ryx 3 postgresql full-text-search

我有一个包含文本列的表格,我想按word搜索,而不是lexeme。更重要的是,我想按单词而不是词素进行索引。我们有大量代码引用的错误转储,它们不适用于任何自然语言词典。

Postgres 有没有办法让 FTS 按单词边界解析而不将单词解析为词素?如果我必须定义一个边界字符列表和一个跳过词目录,那可能没问题。这是否需要制作某种自定义词典,还是已经有类似的东西可用?

我一直认为我错过了一些明显的东西,然后找不到它。

目前,trigram 索引还可以,但我真的更喜欢文本的唯一关键字解析器。

RDS 上的 Postgres 11.4。

Erw*_*ter 8

只需使用simple文本搜索配置,它与simple字典一起工作并且不进行任何词干提取:

CREATE INDEX ON tbl USING GIN (to_tsvector('simple', data));
Run Code Online (Sandbox Code Playgroud)

并相应地查询:

SELECT *
FROM   tbl
WHERE  to_tsvector('simple', data) @@ to_tsquery('simple', 'foo');
Run Code Online (Sandbox Code Playgroud)

有关的: