我在postgresql中实现了一个简单的搜索,用于检索网页上的预先输出结果。所以,我需要使用start-with匹配的最后一个参数,因为用户可能没有完成输入单词。当我构建tsquery
时,我将:*
添加到最后一个参数中。这是一个示例查询:
SELECT id, key, name
FROM principal,
to_tsvector(key || ' ' || name) vector,
to_tsquery('investig:*') query
WHERE vector @@ query
ORDER BY ts_rank(vector, query) DESC
在输入单词"调查"时,我会收到以下行为:
Input | Result Count ========================== i | 0 in | 0 inv | 8 inve | 8 inves | 8 invest | 8 investi | 7 investig | 7 investiga | 0 investigat | 0 investigate | 7
这比省略:*
要好,但不够好。当investiga
返回7个结果时,为什么investigate
的结果为0?是否有更好的方法来构建我的查询以确保我获得以搜索词开头的所有内容?