Postgres:搜索html blob中的可见文本

Postgres:搜索html blob中的可见文本,html,postgresql,search,Html,Postgresql,Search,我有一个postgresql表,在一个文本字段中包含100000多行缓存的HTML。我需要一种搜索HTML的方法,但只搜索那些在HTML发送到浏览器时用户可见的项目 我已经研究了xpath,但是使用XMLPARSE解析HTML会产生错误,因为HTML并不总是格式良好的XML。我还研究了正则表达式的使用,但在这里找到了许多原因,说明了为什么通过正则表达式搜索HTML不能很好地工作 想法?我将通过删除所有标记对列进行预处理: regexp_replace(col, '<[^>]*>

我有一个postgresql表,在一个文本字段中包含100000多行缓存的HTML。我需要一种搜索HTML的方法,但只搜索那些在HTML发送到浏览器时用户可见的项目

我已经研究了xpath,但是使用XMLPARSE解析HTML会产生错误,因为HTML并不总是格式良好的XML。我还研究了正则表达式的使用,但在这里找到了许多原因,说明了为什么通过正则表达式搜索HTML不能很好地工作


想法?

我将通过删除所有标记对列进行预处理:

regexp_replace(col, '<[^>]*>', '', 'g')

我不会在数据库中尝试这样做。根据HTML的复杂程度,例如CSS规则可以根据屏幕大小隐藏元素,您可能可以在PG中执行某些操作,但我通常会将这类操作拉到Python之类的东西中来进行。我应该注意,存储的HTML非常原始。没有隐藏/显示/格式化文本的CSS或Javascript。仍然不是我在数据库中尝试做的事情!你为什么要在PG里做?也许做一次预处理,把HTML清理成PG的XML解析器可以处理的东西,然后你就可以在那里做事情了。否则,只需解析出所有可见项并保存它们以便于搜索。如果你愿意的话,可以在触发器中完成上述操作。这可能是个好主意!我还需要去掉某些标签之间的一些东西,比如*。我将对此进行研究。我最后做了一个与上面类似的预处理步骤:regexp\u replacecol,“?:.+?|.+?|]*?\/?>”,“,”,“gi”