H2数据库整理强度:要选择什么?

问题描述 投票:4回答:1

[经过大量的阅读和实验后,似乎我想以PRIMARY的强度进行搜索,但以TERTIARY或IDENTICAL的顺序进行搜索。 主要问题:使用H2(或任何其他DB)可以实现吗?

第二个问题:我是这里唯一的一个,还是你们中的任何一个也喜欢上述组合?进行一些确认将有助于我的理智。

背景:似乎排序规则只能在创建数据库时一开始设置。所以我想确保选择正确的一个。我主要考虑的是这些用例(目前):

  1. 用户可以在其中开始输入以搜索表格的搜索字段:在这里,PRIMARY似乎是最合适的,以避免丢失任何结果(用户习惯于Google ...)。虽然,能够为用户提供启用二级或三级归类以进行更精确的搜索的选项将非常好。

  2. 排序:当用户单击表列来排序内容时,TERTIARY / IDENTICAL排序似乎是适当的。这就是我每天的经验所习惯的。

我在这里阅读了官方的H2文档:http://www.h2database.com/html/commands.html#set_collation。在这里:http://www.h2database.com/html/datatypes.html#varchar_ignorecase_type其他一些相关信息:Collation STRENGTH and local language relation

测试SQL(来自https://groups.google.com/forum/?fromgroups=#!topic/h2-database/lBksrrcuGdY):

drop all objects;
set collation english STRENGTH PRIMARY;
create table test(name varchar);
insert into test values ('À'), ('Ä'), ('Â'), ('A'), ('à'), ('ä'), ('â'), ('a'), ('àa'), ('äa'), ('âa'), ('aa'), ('B'), ('b');
select * from test where name like 'a' order by name;
select * from test order by name;

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9DR2U0by5wbmcifQ==” alt =“在此处输入图像描述”>

search sql-order-by collation h2
1个回答
2
投票

如果要对单个数据具有两种行为,则必须:

  • 分为两列的数据,
  • 或使用两个运算符集。

出于您的目的,通常存储原始数据的“规范”表示形式,以便搜索规范形式,然后对原始数据进行排序/显示。可能您应该使用某些“文本搜索引擎”,例如Apache Lucene

对于纯H2解决方案,可以将H2 aliasComputed columns或查询条件一起使用。第一种解决方案允许建立索引以加快查询速度。

© www.soinside.com 2019 - 2024. All rights reserved.