0

我需要清理用户的输入字符串,因为我稍后在 OLEDB 查询中使用该字符串来索引文档存储库以查找匹配的文件、描述等。问题是我不能在CONTAINS语句的查询中使用包含特殊字符的字符串.

有没有比我正在做的更好的方法来消毒而不降低准确性?

我目前正在做的是获取搜索字符串,并使用正则表达式对其进行验证:[^0-9a-zA-Z\s\/\._-]+并将其替换为空字符串以删除搜索字符串中的任何特殊字符。

我的问题是某些文件和描述包含特殊字符,如 & 和 $,如果我不允许任何类型的特殊字符,搜索精度会下降。有没有更有效的方法来做到这一点?

4

1 回答 1

0

使用正则表达式绝对是正确的方法。我认为此任务不需要任何其他库特定函数或任何第三方库,或者他们可以通过使用正则表达式来提高性能。无论如何,几点:-允许描述中可能存在的特殊字符(不要通过正则表达式将它们丢弃),排除其余字符。但是我假设您在这里处于循环状态,“包含”不会使用特殊字符,但您需要一些特殊字符。如果是这种情况,那么您可以继续编写一个本地函数,该函数完全执行包含的操作,减去对您需要的某些特定特殊字符的检查。使用本地函数代替 CONTAINS 进行查询。除了这个,我想不出任何其他明显的方法。或者,彻底检查整个搜索逻辑并使用将保持唯一和特殊字符免费的键/字段进行搜索。无论如何,我不认为根据描述在数据库中搜索文件是一个非常绝妙的主意。

于 2016-02-10T15:34:47.357 回答