jac*_*oid 5 postgresql full-text-search
现在我正在使用 ts_rank (带有 ts_vector 和 ts_query)来搜索字符串的相关性。虽然到目前为止这对我来说做得很好。我希望在搜索过程中进行一些模糊的工作。
按照目前的情况,搜索是由用户输入其术语作为字符串来完成的,然后我将其解析为标记。然后将这些标记与字符串进行比较。我想做的是在这些查询中使用类似于 levenshtein 的东西,以允许也匹配较小的拼写错误。
例如,如果用户输入 rubico 而不是 rubicon,我仍然会得到匹配项(因为 rubico 与 rubicon 的距离仅为 1)。
这是否可能与 Postgres 的 ts_rank 功能有关,或者是否有其他选项允许文本搜索与 levenstheins 一起使用?
我没有匹配要模糊搜索的字符串部分,而是将所有术语连接到一个字符串中,然后对其运行差异函数(来自 fuzzystrmatch 模块)。所以它看起来像这样。
FOR term IN terms LOOP
term_string := term_string||' '||term;
END LOOP;
score := score + difference(term_string,string_to_compare_against);
Run Code Online (Sandbox Code Playgroud)
我确实需要设置一个分数需要通过的阈值,以避免出现许多误报。
归档时间: |
|
查看次数: |
3607 次 |
最近记录: |