我希望在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')
,但是我不确定这与实际完全匹配的相似程度。
答案 0 :(得分:1)
似乎您的主要问题是茎梗;用<->
进行词组搜索应该可以按照您的意愿工作。
您可以使用不包含词干词典(例如simple
)的文本搜索配置来避免词干。