使用Java和Oracle搜索国家 /多语言字符



java,Hibernate Oracle。用户存储在数据库中,并具有其名称中的国家字符(ü,ß等)。现在,我需要创建一个方便的搜索功能。示例:当用户类型" do","dö"或" doe"时,应该找到"fidörner"。目前,只有3个规则,例如业务定义的规则,但我希望更多。

推荐的解决方案是什么?Google搜索设备?露西恩?休眠搜索?solr?自定义文本归一化(可以快速完成)吗?还有其他工具吗?

看Oracle文本。默认情况下,这是一个免费的选项。

例如:

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

最新更新