我在 postgres 中使用 dict_xsyn 扩展,它返回多个词位。
例如
CREATE EXTENSION dict_xsyn;
CREATE TEXT SEARCH DICTIONARY names_xsyn (TEMPLATE = 'xsyn_template');
CREATE SEARCH CONFIGURATION english_names ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH names_xsyn, simple;
SELECT to_tsquery('english_names', 'ed')
-- returns: 'ed' & 'edward' & 'edwin' & 'edmond'
我更希望 to_tsquery 返回 ORed 词素,以便我可以匹配其他变体。例如
-- returns: 'ed' | 'edward' | 'edwin' | 'edmond'
我试过 ts_rewrite 但它似乎不支持交换逻辑运算符。
--Edit 我这样做是为了匹配部分匹配的集合。例如,我希望 ed 匹配 edward 和 edwin,但我不想让 edward 匹配 edwin。这是我的词素:
ed -> ed, edward, edwin
edward -> ed, 爱德华
埃德温 -> 埃德,埃德温
使用这些词素将 ed 与 edward 匹配将仅适用于 or。
"ed, edward" @@ "ed | edward | edwin" 会起作用
"ed, edward" @@ "ed & edward & edwin" 不会工作