全文搜索完全匹配

时间:2019-05-03 14:59:48

标签: postgresql

我希望在postgresql上实现布尔文本搜索,以使用户能够建立自己的搜索。

我一直在关注全文搜索功能,在查找单数单词方面似乎相当不错,但是我不能完全使用它来进行精确匹配。

我想传递以下to_tsquery('europe | "hard brexit"'),但似乎不喜欢该查询第二部分的引号。

SELECT title, ts_headline(article, keywords) AS result, rank
FROM (
    SELECT keywords, article, title, phrase, ts_rank(phrase, keywords, 2) AS rank
    FROM (
        SELECT first_name || ' ' || last_name AS title, description AS article, to_tsvector(description) AS phrase
        FROM news.stories
    ) c, to_tsquery('europe | "hard brexit"') AS keywords
    WHERE phrase @@ keywords
    ORDER BY rank desc
    LIMIT 10
) r;

我的问题:在全文搜索中是否可以使用完全匹配?如果没有,如何在Postgresql中实现布尔文本搜索?

编辑:我尝试了以下条件的完全匹配:to_tsquery('europe | hard <-> brexit'),但是我不确定这与实际完全匹配的相似程度。

1 个答案:

答案 0 :(得分:1)

似乎您的主要问题是茎梗;用<->进行词组搜索应该可以按照您的意愿工作。

您可以使用不包含词干词典(例如simple)的文本搜索配置来避免词干。