我使用的是PostgreSQL 11
我想做和高级搜索.
我的目标是判断我的文本中的所有单词是否都存在于原始文本中
这是原文
"dumas, franshesco robert Ferrer Lombardy alive"
这是搜索的可能性:
"franshesco robert alive"
返回ok
"franshesco robert Ferrer Viran"
not ok因为Viran在原文中不存在
"dumas franshesco , robert"
,ok.
"alive dumas ! franshesco"
,ok.
"alive dumas ! suzan franshesco "
不可以,因为suzan在原始文本中不存在
因此,这意味着当搜索首先使用空格分割文本并排除像(,!?.)
这样的特殊字符时
然后判断所有这些词是否都存在于原文"dumas, franshesco robert Ferrer Lombardy alive"
个中
for example to search this "alive dumas ! franshesco"
in the original text "dumas, franshesco robert Ferrer Lombardy alive"
个
首先拆分文本并排除特殊字符
所以把这个单词alive
、dumas
和franshesco
然后判断这些单词在原文中是否都存在.
我使用以下代码:
select string_to_array(regexp_replace('alive dumas ! franshesco', '[^\w]+',' ','g'), ' ') as val_arr
为了将字符串拆分成单词并删除特殊字符
结果是"{alive,dumas,franshesco}"
现在我想要找到一种方法来判断所有这些单词是否都存在于这个字符串中
"dumas, franshesco robert Ferrer Lombardy alive"
个
有人能帮我找到正确的查询吗