database - 显示与搜索与数据库中的排序字符串

标签 database string search sorting

假设我有一个充满音乐艺术家的数据库。考虑以下艺术家:

甲壳虫乐队 - “The”是名称的正式组成部分,但如果我们按字母顺序排列,我们不想将它与“T”一起排序。我们不能轻易将它存储为“Beatles, The”,因为这样我们就无法正确搜索它。

碧昂丝 - 我们需要让用户能够搜索“Beyonce”(没有变音符号)并获得正确的结果。在搜索时,没有用户会知道如何或花时间在最后一个“e”上键入特殊变音符号,但我们显然希望在需要输出时正确显示它。

解决这些问题的最佳方法是什么?在数据库中保留“正式名称”、“搜索名称”和“排序名称”似乎很浪费,因为绝大多数所有条目都将完全相同,但我想不出任何其他选项。

最佳答案

图书馆学专家对此有一个标准答案。 ALA 归档规则以完全标准的方式涵盖了所有这些案例。

你说的是语法排序顺序。这是一个值得商榷的话题。有些人会对您的立场提出异议。

通常,您将标题转换为标准化形式:“Beatles, The”。一般来说,你就这样离开。然后排序。

您可以在此处阅读有关编目规则的信息:http://en.wikipedia.org/wiki/Library_catalog#Cataloging_rules

对于“扩展”字符,您有多种选择。对于某些人来说,é 是一流的字母,变音符号是其中的一部分。他们并不困惑。对于其他人来说,所有变音字符都映射到朴素的字符上。这种映射是一些 Unicode 处理工具的一个特性。

您可以在此处阅读有关 Unicode 变音符号剥离的信息:http://lexsrv3.nlm.nih.gov/SPECIALIST/Projects/lvg/current/docs/designDoc/UDF/unicode/NormOperations/stripDiacritics.html

http://www.siao2.com/2005/02/19/376617.aspx

关于database - 显示与搜索与数据库中的排序字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640858/

相关文章:

string - Python3 - "a bytes-like object is required, not ' str '"on object of type <class ' 字节'>

sql - 如何使用一张数据库表计算一段时间内的差异?

database - VisualStudio 安装项目 : Deploy a Project with Database through a CustomAction BadImageFormatException

mysql - 连接mysql中的两列

java - 使用 Scanner 在一行中接受多个整数

javascript - 替换文本中的随机 youtube 链接以使用 javascript 嵌入代码

wpf - Entity Framework - 从数据库刷新对象

javascript - JS RegExp 从第二次出现 <h2> 标记开始,并包含其后的所有内容

c# - unity InputField OnValueChanged事件显示InputField.text少一个字符

c# - 使用文本框搜索 ListView 项目