如何搜索键盘上没有字符的字符串(非英语)?
Posted
技术标签:
【中文标题】如何搜索键盘上没有字符的字符串(非英语)?【英文标题】:How can I search for strings with characters not on the keyboard (non-english)? 【发布时间】:2011-04-26 15:09:12 【问题描述】:我有一个搜索表单,我希望我的用户能够输入非英文字符的等效英文字符。
例如。 要查找 Ælfred,用户可以搜索“Ælfred”或“AElfred”。 搜索也应该不区分大小写,以便“aelfred”可以工作。 我也让它搜索,默认情况下,它匹配字符串的开头,因此搜索“Æ”或“AE”甚至“A”将在结果中包含Ælfred。
需要考虑其他转换,例如 ê -> e、å -> a。
我正在使用带有 SQL 后端的 ASP.NET。是否有任何标准库可以帮助进行这种搜索?
【问题讨论】:
你真的应该接受更多的答案。 @DMan - 我想人们应该回答我的更多问题。 @cinqoTimo 我正在寻找一个库或 SQL 函数,它将这些字符的 Unicode 转换为可在英文键盘上键入的字符。不知道你的建议对我有什么作用。 SQL Server 的内置全文搜索可以进行不区分重音的搜索,但我不确定这样的双元音。 (我假设您使用的是 MSSQL,因为这是 ASP.NET) @Jeff- 在你的 41 个问题中,只有 3 个没有答案。不是 33%。 【参考方案1】:并不总是存在与非英文字符等效的英文字符,但可以尝试使用 string.Normalize 将 Normalized 字符串存储在不同的字段中并与之进行比较。
MS SQL 字段和全文搜索目录可以不区分重音和大小写,因此您可以涵盖其他情况。
【讨论】:
感谢您的提示 - 我没有考虑过做第二个字段 - 我可能会添加。以上是关于如何搜索键盘上没有字符的字符串(非英语)?的主要内容,如果未能解决你的问题,请参考以下文章