###测试
在前面的基础上,myoracle用户下执行检索:
select * from yu_test where contains(name,'重庆')>0
结果:
ID NAME
1 重庆市沙坪坝区
4 重庆市两江新区
####使用chinese_vgram_lexer分析器和chinese_lexer分析器比较
执行如下sql查看不同分析器的分词情况:
SELECT token_text, token_count FROM dr$YU_TEST_INDEX$i
- 使用chinese_vgram_lexer分析器的分词情况:
TOKEN_TEXT TOKEN_COUNT
上海 2
东新 1
东方 1
两江 1
京市 1
件园 2
北京 1
区 4
区金 1
园 2
国家 1
坝区 1
坪坝 1
城区 1
天府 1
家软 1
市两 1
市国 1
市天 1
市沙 1
市浦 1
市西 1
市青 1
庆市 2
府软 1
成都 2
新区 2
方明 1
无锡 1
明珠 1
桥镇 1
江新 1
江苏 1
沙坪 1
浦东 1
海东 1
海市 1
珠 1
省无 1
羊区 1
苏省 1
西城 1
软件 2
都市 2
重庆 2
金桥 1
锡市 1
镇 1
青羊 1
- 使用chinese_lexer分析器的分词情况:
TOKEN_TEXT TOKEN_COUNT
上海 1
上海市 1
东方 1
两江 1
北京市 1
区 2
园 2
国家 1
坝区 1
坪坝 1
天府 1
市 1
成都市 2
新区 2
无锡 1
明珠 1
桥镇 1
江 1
江苏省 1
沙坪 1
浦东 1
羊区 1
西城区 1
软件 2
重庆市 2
金桥 1
镇 1
青羊 1
通过对比可以发现:
-
chinese_lexer分析器分词比较严格,按常用词汇进行拆分存储。比如“中国重庆”,只会被拆分为“中国”、“重庆”两个词组。
-
chinese_vgram_lexer分析器则按字为单元来进行拆分,比如“中国重庆”,可以拆分为“中”、“中国“、”国重”、“重庆”、“庆”五个词组。这种方式的好处是能够将所有有可能的词组全部保存进索引表,使得数据不会遗漏。