在具有 html 实体的字段中搜索

发布于 2024-11-01 17:53:40 字数 363 浏览 4 评论 0原文

我们客户的数据 (SQL Server 2005) 中包含 html 实体 (é -> é)。

我们需要在这些字段内进行搜索,因此搜索“équipe”将找到“équipe”。

我们无法更改数据,因为我们客户的客户可以随意编辑这些字段(使用 HTML 编辑器),因此如果我们删除这些实体,在下次编辑时它们可能会重新出现,并且问题仍然存在。
我们不能使用 .net 服务器端函数,因为我们需要在行返回到服务器之前找到它们。

我会使用一个用 UTF-8 对应项替换实体的函数,但这有点烦人,而且我认为它严重降低了搜索性能(如果我没记错的话,与全表扫描有关)。

有什么想法吗?

谢谢

Our customer's data (SQL Server 2005) has html entities in it (é -> é).

We need to search inside those fields, so a search for "équipe" will find "équipe".

We can't change the data, because our customer's customers can edit those fields as will (with a HTML editor), so if we remove the entities, on the next edit they might reappear, and the problem will still be there.
We can't use a .net server-side function, because we need to find the rows before they are returned to the server.

I would use a function that replaces the entities by their UTF-8 counterparts, but it's kind of tiresome, and I think it seriously drops the search performances (something about full table scan if I recall correctly).

Any idea ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北方的韩爷 2024-11-08 17:53:40

您只需要检查并编码传入的搜索词。
如果将“équipe”转换为“équipe”并在 WHERE/FTS 子句中使用它,则仍然可以使用该字段上的任何索引,如果优化器认为这是合适的。

You would only need to examine and encode the incoming search term.
If you convert "équipe" to "équipe" and use that in your WHERE/FTS clause then any index on that field could still be used, if the optimizer deems it appropriate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文