Postgres全文忽略xml标记

问题描述 投票:0回答:1

我正在使用Web应用程序,该应用程序使用户可以在源存储库中进行搜索。该程序解析差异。我找不到将diff的所有部分注入Postgres全文矢量的方法。

示例:

select alias, description, token from ts_debug('Link to <a href="//www.yahoo.com">Yahoo!</a> web site');
+-----------+-----------------+----------------------------+
|   alias   |   description   |           token            |
+-----------+-----------------+----------------------------+
| asciiword | Word, all ASCII | Link                       |
| blank     | Space symbols   |                            |
| asciiword | Word, all ASCII | to                         |
| blank     | Space symbols   |                            |
| tag       | XML tag         | <a href="//www.yahoo.com"> |
| asciiword | Word, all ASCII | Yahoo                      |
| blank     | Space symbols   | !                          |
| tag       | XML tag         | </a>                       |
| blank     | Space symbols   |                            |
| asciiword | Word, all ASCII | web                        |
| blank     | Space symbols   |                            |
| asciiword | Word, all ASCII | site                       |
+-----------+-----------------+----------------------------+

似乎已经解析好。但是,如果将其转换为文档向量,则不会包含XML标签。

select to_tsvector('simple', 'Link to <a href="//www.yahoo.com">Yahoo!</a> web site') to_tsvector;
+--------------------------------------------+
|                to_tsvector                 |
+--------------------------------------------+
| 'link':1 'site':5 'to':2 'web':4 'yahoo':3 |
+--------------------------------------------+

我想它与配置有关?

有什么想法吗?

postgresql full-text-search full-text-indexing
1个回答
0
投票

解析器解析标签,但是默认配置“简单”将忽略它们。

您可以告诉它不要忽略它们:

alter text search configuration simple add mapping for tag with simple;

但是您可能最好先复制配置,然后再修改副本。

您可能还需要一个自定义词典来处理标签,因为“简单”词典不太可能做您想要的事情。

select to_tsvector('simple', 'Link to <a href="//www.yahoo.com">Yahoo!</a> web site') to_tsvector;
                                    to_tsvector                                     
------------------------------------------------------------------------------------
 '</a>':5 '<a href="//www.yahoo.com">':3 'link':1 'site':7 'to':2 'web':6 'yahoo':4
© www.soinside.com 2019 - 2024. All rights reserved.