Oracle文本:得分函数的奇怪行为
发布时间:2021-03-06 04:05:03 所属栏目:站长百科 来源:网络整理
导读:我对德国姓氏“Warsoenke”有一种奇怪的行为. 看一下这个: create table test_warsoeasselect 'Mister Warsoenke ABC-12' namefrom dual;create index test_warsoe_index on test_warsoe(name) indextype is ctxsys.context;select name,score(1) as rating
我对德国姓氏“Warsoenke”有一种奇怪的行为. 看一下这个: create table test_warsoe as select 'Mister Warsoenke ABC-12' name from dual; create index test_warsoe_index on test_warsoe(name) indextype is ctxsys.context; select name,score(1) as rating_warsoe,score(2) as rating_warsoen from test_warsoe where contains(name,'definescore(Warsoe%,occurrence)',1) > 0 or contains(name,'definescore(Warsoen%,2) > 0; 输出是: Mister Warsoenke ABC-12 | 2 | 1 我想不通为什么?如果我输入“Warsoe”或“War”,它会返回得分2.如果我输入“Warsoen”,它就像我理解的那样,应该返回1. 如果我不使用definecore,它的工作方向相同,只显示不同的数字(27和13). 对于其他姓氏,它完美而清晰.但对于这一个…… 我猜这是因为德国的数据库设置,例如“战争如此……”但这个想法很奇怪,但仍然不清楚为什么“Warsoen”会起作用. 有任何想法吗? 编辑 我发现了更多不像上述那样工作的姓氏.我仍然没有看到任何可能的解释…… 解决方法如果有人遇到同样的问题,问题在于设置DEFAULT_LEXER:BASE_LETTER | YES ALTERNATE_SPELLING | GERMAN 这是我们调查后收到的: 要更改行为,必须更改两个参数中的任何一个,或者必须将附加参数OVERRIDE_BASE_LETTER设置为true(根据docs). (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐