【问题标题】:Postgres Full text search not returning expected resultsPostgres全文搜索未返回预期结果
【发布时间】:2020-01-24 02:18:40
【问题描述】:

我正在尝试使用 Postgres 设置全文搜索,但我得到了意想不到的结果。

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross' );是的,我所期望的

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross & john' ); 再次真实和预期。

SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery( 'ross & carrie' ); 错误?

如果我查看 tsvector 的结果,Carrie 变成了Carri

'carri':4 'john':2 'ross':1

我假设这与 english 规范化有关,但我不明白如何才能获得预期的结果。

【问题讨论】:

    标签: postgresql full-text-search


    【解决方案1】:

    to_tsvector() and to_tsquery() 都支持text search configuration 的附加参数。两者都使用相同的:

    SELECT to_tsvector('english', 'ross, john and carrie')
        @@ to_tsquery ('english', 'ross & carrie' );
    

    如果省略该参数,则默认为默认设置。我敢打赌,您的默认文本搜索配置是 not 'english'。检查:

    SHOW default_text_search_config;
    

    【讨论】:

      【解决方案2】:

      解决方案非常简单。

      确保在您的 ts_query 中使用相同的语言。

      SELECT to_tsvector('english', 'ross, john and carrie' ) @@ to_tsquery('english', 'ross & carrie' );

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-20
        • 2020-05-04
        • 2021-07-06
        • 2021-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多