cro*_*cro 6 postgresql full-text-search
我在表格中有一个文本列。我们在此列中存储 XML。现在我想搜索标签和值
示例数据:
<bank>
<name>Citi Bank</name>
.....
.....
/<bank>
Run Code Online (Sandbox Code Playgroud)
我想运行以下查询:
从 xxxx 中选择*,其中 to_tsvector('english',xml_column) @@ to_tsquery(' <name>Citi Bank</name>')
这工作正常,但它也适用于像 name1 或无标签这样的标签。
我必须如何设置搜索才能使其正常工作,以便获得标签和值的精确匹配?
您可以像这样使用 xpath 函数
select *
from xxx
where xpath(xml_column, 'bank/name/text()') = 'CitiBank';
Run Code Online (Sandbox Code Playgroud)
但它不会使用全文搜索索引。您可以使用子查询来查找可能的匹配项并避免完全扫描,并使用 xpath 表达式来获取正确的答案,或者如果查询始终相同,则可以创建函数索引。
| 归档时间: |
|
| 查看次数: |
10580 次 |
| 最近记录: |