高级用法
本文档介绍 relationship-ts 的高级用法。
自定义方言模式
你可以使用 setMode() 方法设置自定义的方言模式:
ts
import relationship from 'relationship-ts';
// 设置北方方言模式
relationship.setMode('northern', {
'm,f': ['姥爷'],
'm,m': ['姥姥'],
'm,xb,s&o': ['表哥'],
'm,xb,s&l': ['表弟'],
});
// 使用自定义模式
relationship({ text: '妈妈的妈妈', mode: 'northern' });
// => ['姥姥']覆盖默认称谓
ts
// 覆盖默认的称谓
relationship.setMode('custom', {
'f': ['老爸', '爹地'],
'm': ['老妈', '妈咪'],
'f,f': ['阿公'],
'f,m': ['阿嫲'],
});
// 使用自定义模式
relationship({ text: '爸爸', mode: 'custom' });
// => ['老爸', '爹地']获取数据信息
获取数据表
ts
const data = relationship.data;
console.log(data); // Map 结构的数据表获取数据量
ts
const count = relationship.dataCount;
console.log(`当前数据量: ${count}`); // 当前数据量: 3000+使用内置方言
粤语(广东)方言
ts
import relationship from 'relationship-ts';
import { guangdong } from 'relationship-ts/locale/guangdong';
// 设置方言模式
relationship.setMode('guangdong', guangdong.data);
// 使用方言模式查询
relationship({ text: '妈妈的妈妈', mode: 'guangdong' });
// => ['阿婆']北方方言
ts
import relationship from 'relationship-ts';
import north from 'relationship-ts/locale/north';
// 设置方言模式
relationship.setMode('north', north.data);
// 使用方言模式查询
relationship({ text: '妈妈的妈妈', mode: 'north' });
// => ['姥姥']性能优化技巧
缓存机制
relationship-ts 内置了 LRU 缓存机制,自动缓存常用查询结果:
ts
// 第一次查询(较慢,~0.07ms)
relationship({ text: '爸爸的妈妈' });
// 第二次查询(更快,~0.03ms,命中缓存)
relationship({ text: '爸爸的妈妈' });批量查询
对于批量查询,建议使用相同的模式:
ts
// 好的做法:使用相同模式
const results = [
relationship({ text: '爸爸' }),
relationship({ text: '妈妈' }),
relationship({ text: '哥哥' }),
];
// 避免:频繁切换模式(会清除缓存)
const results = [
relationship({ text: '爸爸', mode: 'default' }),
relationship({ text: '爸爸', mode: 'guangdong' }),
relationship({ text: '爸爸', mode: 'north' }),
];完整选项示例
ts
import relationship from 'relationship-ts';
const result = relationship({
text: '爸爸的妈妈', // 目标对象的称谓
target: '', // 相对对象的称谓(空表示自己)
sex: 1, // 本人性别:1=男性,0=女性,-1=未知
type: 'default', // 转换类型:default=计算称谓,chain=计算关系链,pair=计算合称
reverse: false, // 称呼方式:true=对方称呼我,false=我称呼对方
mode: 'default', // 使用的方言模式
optimal: false, // 是否计算两者之间的最短关系
});