使用java和oracle使用国家/多语言字符进行搜索

使用java和oracle使用国家/多语言字符进行搜索,java,oracle,hibernate,search-engine,multilingual,Java,Oracle,Hibernate,Search Engine,Multilingual,Java、hibernate+oracle。用户存储在数据库中,姓名中有国家字符(ü、ß等)。现在我需要创建一个方便的搜索功能。示例:当用户键入“do”、“dö”或“doe”时,应找到条目“Fidörner”。目前只有3条类似于上面的规则,其中一条是由业务部门定义的,但我预计还会有更多 建议的解决方案是什么?谷歌搜索设备?卢森?休眠搜索?索尔?自定义文本规范化(能否快速完成)?还有其他工具吗?看看。默认情况下,它是安装在数据库上的免费选项 例如: create table users(name

Java、hibernate+oracle。用户存储在数据库中,姓名中有国家字符(ü、ß等)。现在我需要创建一个方便的搜索功能。示例:当用户键入“do”、“dö”或“doe”时,应找到条目“Fidörner”。目前只有3条类似于上面的规则,其中一条是由业务部门定义的,但我预计还会有更多

建议的解决方案是什么?谷歌搜索设备?卢森?休眠搜索?索尔?自定义文本规范化(能否快速完成)?还有其他工具吗?

看看。默认情况下,它是安装在数据库上的免费选项

例如:

create table users(name varchar2(100));
insert into users values ('Fidörner');
insert into users values ('Fido');
insert into users values ('Smith');
commit;

begin
  ctx_ddl.drop_preference('mylex');
  ctx_ddl.create_preference('mylex', 'basic_lexer');
  ctx_ddl.set_attribute('mylex', 'base_letter', 'YES');
  ctx_ddl.set_attribute('mylex','alternate_spelling','german');
end;
/

create index users_index on users(name)
indextype is ctxsys.ctxcat  parameters ('LEXER mylex');

select * from users where catsearch(name, '**do*', null) > 0;
select * from users where catsearch(name, '**dö*', null) > 0;
select * from users where catsearch(name, '**doe*', null) > 0;
所有返回:

Name
----
Fidörner
Fido