WO2012088772A1 - 一种手持设备高效联系人查找方法 - Google Patents

一种手持设备高效联系人查找方法 Download PDF

Info

Publication number
WO2012088772A1
WO2012088772A1 PCT/CN2011/070054 CN2011070054W WO2012088772A1 WO 2012088772 A1 WO2012088772 A1 WO 2012088772A1 CN 2011070054 W CN2011070054 W CN 2011070054W WO 2012088772 A1 WO2012088772 A1 WO 2012088772A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
character
string
matching
letter
Prior art date
Application number
PCT/CN2011/070054
Other languages
English (en)
French (fr)
Inventor
朱胜
Original Assignee
北京友录在线科技发展有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 北京友录在线科技发展有限公司 filed Critical 北京友录在线科技发展有限公司
Publication of WO2012088772A1 publication Critical patent/WO2012088772A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3337Translation of the query language, e.g. Chinese to English
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/26Devices for calling a subscriber
    • H04M1/27Devices whereby a plurality of signals may be stored simultaneously
    • H04M1/274Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc
    • H04M1/2745Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc using static electronic memories, e.g. chips
    • H04M1/27467Methods of retrieving data
    • H04M1/2748Methods of retrieving data by matching character strings

Definitions

  • the invention relates to an efficient contact searching method for a handheld device, and belongs to the field of information technology processing.
  • the invention can realize that the handheld device searches for the contact by directly pressing the number key, and at the same time gives the matching result of the smart search, so that the user can continue to input characters for more accurate searching. Background technique
  • the contact search based on the letter input must also click a number key multiple times to select the letter to be input, and then use the letter to search for the contact's name. For example, if you look for " Steven" in the English environment, the user must press the number key '7' four times to select the letter 'S', and enter the entire word to press the button fourteen times. The way the numeric keyboard contacts are searched severely restricts the speed at which contacts are searched. In addition, the traditional search method only sorts the search results by the contact's name. If the first few characters of the name are the same, the user must input more characters to find the contact that you want to find. Summary of the invention
  • an object of the present invention is to provide an efficient contact lookup method for a handheld device.
  • This program directly uses the input numbers to find contacts. When searching, the numeric keypad mapping will automatically enumerate the possible letter combinations corresponding to the numbers, then use the letter combination to filter the contacts; and also use the entered numbers to find the contact's mobile number.
  • the program also uses the matching degree and the contact frequency to intelligently sort the search results to improve the accuracy of the search.
  • the search results highlight matching letters, allowing the user to continue entering numbers or deleting numbers for further searching.
  • An efficient contact finding method for a handheld device the steps of which are:
  • the fields of the character lookup table include: a file type identifier, a storage start position of the spell string cache in the file, a storage location of the character node in the file, and a number of character nodes.
  • one character is set with one or more letter spelling strings.
  • next sub-node is used to match the characters of the remaining part of the filter string. If the end of the filter string is matched, the match is considered successful. Otherwise, the match is considered to be unsuccessful.
  • the matched status information includes: a location of the child node in the sequence node, a branch position of the branch node, and a state in which the child node matches the filter string.
  • the character nodes are arranged according to the Unicode value of the characters from small to large; the half-search method is used to find the letter string corresponding to the current character in the character check table; the name decomposition result is expressed by the regular grammar as: SL(C
  • the matching result in the matching contact is highlighted, and the matching accuracy is calculated, and the search result is sorted according to the matching accuracy.
  • the method for calculating the matching accuracy is:
  • the matched contact list is sorted according to the matching result by first sorting the matching contacts in ascending order according to the matching precision; then, the contacts with the same matching accuracy are sorted in descending order according to the contact frequency, and finally Contacts with the same match accuracy and the same contact frequency are sorted by name.
  • Figure 1 Flow chart of the method of the present invention
  • FIG. 1 Create a character lookup table (SpellTabl e ) for characters in the text that need to be converted to letters.
  • a character may have multiple letters spelling strings.
  • the storage can use a half-fold search to speed up the search. Omit this step for languages that don't require spelling.
  • Character 2 letter spelling string 3 Create a character lookup table and save it in a binary file.
  • the file structure is as follows:
  • File header SpellTableFileHead is used to identify the spellstring cache location and the number and location of character nodes.
  • the spelling string is stored immediately after the file header, and then the character node is stored (the CharNode character nodes are arranged according to the Unicode value of the characters from small to large, which makes it easy to use the binary search.
  • Int mSpellsOffset //The spelling string is cached at the beginning of the file, and each spelling string ends with ' ⁇ 0'.
  • Int mNodesOffset The location where the II character nodes are stored in the file. Each node is a CharNode. Int mNodesCount; // The number of character nodes. Struct CharNodej
  • Unsigned short mSpell II stores the offset of the spelling string in the file.
  • the numeric keyboard has fewer letters and is saved directly using an array.
  • the search can be searched in order.
  • L2 .., Ln
  • the decomposition results are stored in the sequence node of the linked list structure.
  • the same algorithm can also be used when searching for contact phone numbers.
  • the name decomposition algorithm is as follows:
  • Void DictEngine :: ParserName(const wchar_t* name, Sequence& blocks) ⁇
  • Const wcharj* spells[MAX_SPELL_COU T];
  • the child nodes stored in the order node are used to match the original filter string entered by the user in turn.
  • Character nodes can directly compare their stored characters to filter strings.
  • the letter string node is compared to the filter string using a fuzzy comparison algorithm.
  • the branch node compares its stored character node or letter string node with the filter string, and considers that the branch node matches the filter string as long as one node matches successfully.
  • the status information of each sub-node in the sequence node matching the filter string is recorded, and then the next sub-node is used to continue matching with the remaining part of the filter string. If the match is reached to the end of the filter string, the match is considered successful, otherwise the match is considered to have failed.
  • Bool DictEngine : IsLetterMatch(wchar_t c, wchar_t filter) ⁇
  • Int DictEngine : Find(wchar_t letter) ⁇
  • Recording node matching status data includes: the position of the child node in the sequence node, and the state in which the child node matches the filter string (when the state is greater than 0, it indicates the length of the match).
  • Void CharBlock : getContent( Result& result, int state ) const ⁇
  • the filtered results are sorted by four dimensions: matching accuracy, contact frequency, contact name, and contact phone number.
  • the calculation of the contact frequency is obtained by counting the number of call records by accumulating short messages.
  • the II match is in ascending order, and the larger the value, the lower the priority.
  • the II contact frequency uses descending order, and the smaller the value, the lower the matching priority.
  • character in this article means that the text cannot be directly input through the keyboard, but can be converted into a specific letter string for input, which requires input method support. Such as Chinese characters in Chinese.
  • Letter spelling string enter the specific letter sequence required for the character. Such as pinyin, strokes, phonetic, Cangjie in Chinese characters, kana pronunciation in Japanese, etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Machine Translation (AREA)
  • Input From Keyboards Or The Like (AREA)

Description

一种手持设备高效联系人査找方法 技术领域
本发明涉及一种手持设备高效联系人查找方法, 属于信息技术处理领域。 本发明可实现 手持设备通过直接按数字键对联系人进行查找, 同时给出智能查找的匹配结果, 以方便使用 者继续输入字符进行更准确的查找。 背景技术
现今手机行业发展迅猛, 手机已成为人们日常生活中不可或缺的一部重要的移动设备。 然而受物理尺寸限制, 手机制造商往往采用物理数字键盘以减少键盘占用的空间。 还有许多 触屏手机提供的虚拟键盘也适用数字键盘的布局, 方便用户点击。 在数字键盘输入时, 各种 语言一般将字母表映射到 0-9 的十个数字上, 通过连续点击数字按键在字母之间切换。 还有 许多语言 (例如汉字) 不能通过数字键盘直接输入字符, 还需要使用本地的输入法进行一个 转换。
受此种数字键盘输入方式的影响, 基于字母输入的联系人查找也必须多次点击一个数字 键选择要输入的字母, 然后使用该字母进行对联系人的姓名进行查找。 例如在英文环境中查 找 " Steven", 用户必须连续按四下数字键 ' 7' 选择字母 ' S ', 输入整个单词需要按十四次 按键。 数字键盘联系人查找方式严重制约联系人的查找速度。 另外, 传统的查找方式只会将 搜索结果按照联系人的姓名进行排序, 如果姓名的前几个字符相同, 用户必须输入更多的字 符才能准确查找到想要找到的联系人。 发明内容
针对现有技术中存在的技术问题, 本发明的目的在于提供一种手持设备高效联系人查找 方法。 本方案直接采用输入数字对联系人进行查找。 查找时, 自动根据数字键盘映射将列举 出数字对应的可能字母组合, 然后使用字母组合对联系人进行过滤; 同时还使用输入的数字 对联系人的手机号码进行查找。本方案还使用匹配程度和联系频率对搜索结果进行智能排序, 以提高搜索的准确性。 搜索结果高亮显示匹配的字母, 方便用户继续输入数字或者删除数字 进行进一步查找。
本发明的技术方案为:
一种手持设备高效联系人查找方法, 其步骤为:
1 ) 建立一字符反查表, 用于保存需要转换成字母才能输入的字符; 2) 建立一数字键盘映射表, 用于保存字母与键盘数字之间的对应关系;
3 ) 利用所述字符反查表对通讯录中的联系人姓名进行分解, 得到姓名中的标点符号 S、 连续的字母串 L、字符 C及其字母拼写串 (Ll, L2,..,Ln), 并将分解结果保存到一链表结 构的顺序节点中;
4) 利用所述数字键盘映射表对链表中存储的姓名分解结果与用户输入的过滤字符串进行 匹配;
5 ) 返回包含匹配信息的联系人, 得到匹配的联系人列表。
进一步的, 所述字符反查表的字段包括: 文件类型标识、 拼写串缓存在文件中的存储起 始位置、 字符节点在文件中的存储位置、 字符节点个数。
进一步的, 一个字符设置有一个或多个字母拼写串。
进一步的, 将通讯录中的联系人姓名进行分解并保存到链表中的方法为:
1 )获取姓名中每一个字符, 如果当前字符是一个字母, 将其添加到字母串缓存, 否则将 已缓存字母作为一个字母串节点, 添加到顺序节点中;
2)如果当前字符是可拼写的字符, 则将当前字符添加到一个字符节点; 同时获取当前字 符的字母拼写串, 并将每一个字母拼写串添加到一个字母串节点; 最后将字符节点和 字母串节点添加到一个分支节点中, 并将该分支节点添加到顺序节点中;
3 )如果当前字符是无法识别的字符, 则将其当作标点符号单独作为一个字符节点添加到 顺序节点中。
进一步的, 将链表中存储的姓名分解结果与用户输入的过滤字符串进行匹配的方法为:
1 ) 将顺序节点中存储的子节点依次与用户输入的过滤字符串进行匹配, 并记录顺序节点 中每一个子节点与过滤串的匹配的状态信息; 其中, 如果当前子节点是字符节点, 则 将其存储的字符与过滤串当前字符直接进行比较, 如果是字母串节点, 则将其存储的 字母及字母对应于数字键盘上的数字分别与过滤串当前字符进行比较, 如果是分支节 点, 则将其存储的字符节点或字母串节点与过滤串当前字符进行比较, 只要有一个节 点匹配成功就认为分支节点与过滤串匹配;
2) 使用下一个子节点与剩余部分过滤串的字符继续匹配, 如果能够匹配到过滤字符串的 结尾, 则认为本次匹配成功, 否则认为本次匹配失败。
进一步的, 所述匹配的状态信息包括: 子节点在顺序节点中的位置, 分支节点的分支位 置, 子节点与过滤字符串匹配的状态。
进一步的, 所述字符节点按照字符的 Unicode值从小到大排列; 采用折半查找方法查找 当前字符在所述字符反查表中对应的字母串; 将姓名分解结果采用正则文法表示为: SL(C|U|L2|..|:Ln)。
进一步的, 将匹配联系人中的匹配结果进行高亮显示, 并计算匹配准确度, 根据匹配准 确度对搜索结果排序。
进一步的, 计算所述匹配准确度的方法为:
1 ) 遍历解析后的节点串中每一个节点, 如果当前节点匹配就返回匹配精确度为 0, 否则 返回匹配精确度为 1 ;
2) 将匹配精确度返回值进行累加, 累加值愈大则匹配的准确度越低, 反之匹配度越高;
3 ) 将匹配精确度保存到匹配结果中。
进一步的, 根据匹配结果对匹配的联系人列表进行排序, 其方法为: 首先根据匹配精确度 对匹配联系人进行升序排序; 然后对于匹配精确度相同的联系人根据联系频率进行降序排列, 最后对于相同匹配精确度和相同联系频率的联系人根据姓名排序。
与现有技术相比, 本发明的积极效果为:
1. 接受用户直接输入数字, 使用数字按照键盘映射对联系人查找;
2. 查找联系人时, 除了对姓名查找外还对用户手机号码进行;
3. 统计查找的匹配准确度, 根据匹配准确度和联系频率对过滤后联系人排序;
4. 高亮显示字母匹配结果, 方便用户继续输入; 附图说明
图 1 : 本发明方法流程图;
图 2: 使用手机数字键盘联系人查找。 具体实施方式
下面结合附图对本发明的具体实施方式进行详细描述, 本发明的方法流程如图 1所示。 1. 对于文字中需要转换成字母才能输入的字符, 建立字符反查表(SpellTable)。 一个字符可 能有多个字母拼写串, 按照字符排序后存储可以使用折半查找加快查找速度。 对于不需 要拼写转化的语言省略此步骤。
表格 1 : 字符反查表
字符 1 字母拼写串 1
字符 1 字母拼写串 2
字符 2 字母拼写串 3 建立字符反查表, 保存在二进制文件中。 文件结构如下:
文件头 SpellTableFileHead用于识别拼写串缓存位置和字符节点位置和个数。 在文件头 后面紧接着存储拼写串, 然后是存储字符节点(CharNode 字符节点按照字符的 Unicode值 从小到大排列, 便于使用折半查找。
struct SpellTableFileHead {
char mMagic[4]; II文件类型标识, 存储固定字符串" yldb"。
int mSpellsOffset; //拼写串缓存在文件中的存储起始位置, 每个拼写串以' \0'结束。 int mNodesOffset; II字符节点在文件中的存储位置, 每一个节点为一个 CharNode。 int mNodesCount; // 字符节点个数。 struct CharNodej
wchar_t mChar;
unsigned short mSpell; II存储拼写串在文件中的偏移量。
}
2. 对字母建立数字键盘映射表 (LetterTable), 用于数字串和字母串的匹配, 多个字母可能对 应一个数字。
表格 2: 字母数字键盘映射表
Figure imgf000006_0001
数字键盘的字母比较少, 直接使用数组保存, 查找可以使用顺序查找。
struct LetterNode{
wchar_t mLetter;
wchar_t mKeypad; const LetterNode g—EnglishTable[] = { {'aV2'},{'b','2'},{'cV2'}, {'d','3'},… };
3. 将联系人姓名分解为标点符号 (S)、连续的字母串 (L)、字符 (C)并读取字符的字母拼写串 (Ll:
L2,..,Ln), 使用正则文法表示为: SL(C|Ll|L2|..|Ln)。 将分解结果存储到链表结构的顺序 节点 (Sequence) 中。 联系人电话号码搜索时也可以使用相同的算法。 姓名分解算法如下:
a. 获取姓名中每一个字符
b. 如果是一个字母, 将其添加到字母串缓存, 如果不是字母将现有的字母缓存作为一 个字母串节点, 添加到顺序节点 (Sequence) 中。
c 如果是可拼写的字符, 将该字符添加到一个字符节点。 同时获取该字符的字母拼写 串, 并将每一个字母拼写串添加到一个字母串节点。 最后将字符节点和字母串节点添 加到一个分支节点中,, 并将该分支节点添加到顺序节点 (Sequence) 中。
d. 将无法识别的字符当作标点符号单独作为一个字符节点添加到顺序节点 ( Sequence) 中。
void DictEngine:: ParserName(const wchar_t* name, Sequence& blocks) {
wcharj letters[MAX_NAME_SIZE];
const wcharj* spells[MAX_SPELL_COU T];
int len = 0;
while(^imme) {
wchar—t c = :iiname++;
int type = GetCharType(c);
if(type == CT LETTER) { II字母
letters[len++] = c;
} else {
if(len)
blocks. append(new LetterBlock(this, letters, len));
len = 0;
if(type == CT CHAR) {
Alternative* alt = new Alternative();
alt->append(new CharBlock(c));
int count = GetSpells(c, spells, MAX SPELL COUNT);
for(int i=0; i<count; i++)
alt->append(new LetterBlock(this, spells[i]));
blocks. append(alt);
} else {
blocks. append(new CharBlock(c));
if(len)
blocks. append(new LetterBlock(this, letters, len)); 字符拼写反查使用折半查找指定字符在字符表数组中的上下边界, 将拼写串指针存贮在 spells数组中, 返回实际的拼写串个数。 int DictEngine: :GetSpells(wchar_t c, const wchar_t* spells口, int maxCount){
int lpos = LowerBound(c, mSpellTable); II在字符表中找到上边界
int hpos = UpperBound(c, mSpellTable, lpos); II在字符表中找到下边界
int count = Min(hpos - lpos, maxCount);
for(int i=0; i<count; i++)
spells[i] = mSpellBuf + mSpellTable[i].mSpell;
return count;
使用顺序节点中存储的子节点依次与用户输入的原始过滤字符串进行匹配。 字符节点可 以直接将其存储字符与过滤串进行比较。 字母串节点使用模糊比较算法与过滤串进行比 较。 分支节点将其存储的字符节点或字母串节点与过滤串进行比较, 只要有一个节点匹 配成功就认为分支节点与过滤串匹配。 匹配过程中记录顺序节点中每一个子节点与过滤 串的匹配的状态信息, 然后使用下一个子节点与剩余部分过滤串继续匹配。 如果能够匹 配到过滤字符串的结尾, 认为本次匹配成功, 否则认为本次匹配失败。
4.1 字母串过滤算法:
a. 如果状态大于 1, 说明已经比较过, 但是查询失败, 需要回退一个字母再次比较。 b. 如果不是 MATCHJNIT (值为 -1 ), 说明所有的尝试都告失败。
c 然后使用模糊匹配算法将字母串与过滤字符串从左向右的每一个字符进行比较。 d. 返回匹配的长度, 如果是 0表示不匹配。
II字母串匹配算法:
int LetterBlock: :match( const wchar_t* filter, int& state ){
if( state > 1)
—state;
else if(state != MATCH— INIT)
state = 0;
else{
const wchar_t* p = mSpell;
while(*p && *filter && dictEngine-> IsLetterMatch (*p==*filter))
++p, ++filter;
state = int(p-mSpell); return state; 4.1.1 字母模糊匹配算法:
a. 如果字母与过滤串字符相等, 匹配成功, 返回 true。
b. 查找字母在数字键盘对应的数字 (见 4.1.2), 如果该数字与过滤字符相等, 就认为过 滤字符与字母匹配, 返回 true。
c. 否则认为匹配尝试失败, 返回 false。
bool DictEngine:: IsLetterMatch(wchar_t c, wchar_t filter) {
if(c == filter)
return true;
int pos = Find(c);
if(pos>=0 && mLetterTable[pos].mKeypad == filter)
return true;
return false;
4.1.2 使用顺序查找算法找到字母在键盘上对应的数字:
int DictEngine:: Find(wchar_t letter) {
for(int i=0; i<mLetterCount; i++) {
if(mLetterTable[i] . mLetter == letter)
return i; return -1 ;
4.2 字符匹配算法: 只有第一次匹配且过滤字符与当前字符相等时, 认为正确匹配, 返回 匹配长度 1, 否则认为匹配失败, 返回 0。
int CharBlock: :match( const wchar_t* filter, int& state ){
return (state== MATCH— INIT && mChar == * filter) ? 1 : 0;
4.3 记录节点匹配状态数据包括: 子节点在顺序节点中的位置, 子节点与过滤字符串匹配 的状态 (状态大于 0时表示匹配的长度)。
struct State {
int mltem; II节点位置
int mSubltem; //分支节点的分支位置
int mState; II 匹配的状态
5. 获取匹配的结果。 如果顺序节点与过滤字符串匹配成功, 根据保存的匹配状态数据分别 获取字符节点、 字母串节点与过滤串的匹配部分的和不匹配部分, 以及匹配准确度。 获取匹配结果的算法: a. 如果当前字母串节点与字符串不匹配 (state为 -1 ), 将整个字母串作为不匹配部分添加 到匹配结果。
b. 如果匹配, 分别将匹配部分和不匹配部分分别添加到匹配结果。
void LetterBlock:: getContent( Result& result, int state ) const {
if(state == MATCH— INIT)
result. append(mSpell, false);
else{
result. append(mSpell, state, true);
if(mSpell[state])
result. append(mSpell+state, false); 将字符节点也添加到匹配结果中。
void CharBlock:: getContent( Result& result, int state ) const {
result. append(&mChar, 1, state! =MATCH_INIT); 获取匹配的精确度:
a. 遍历解析后的节点串 (Sequence) 的每一个节点, 如果当前节点匹配(state>0)就返回 0, 否则 (state== MATCH_INIT) 返回 1。
b. 将匹配精确度返回值进行累加, 累加值愈大就认为匹配的准确度越低, 否则就认为匹 配度越高。
c 将匹配精确度保存到匹配结果中。
//获取匹配的精确度, 返回结果越小表示越准确, 便于累加统计。
int LetterBlock:: getAccuracy( int state ) const {
return (state == MATCH— INIT);
6. 智能排序。 将过滤结果按照匹配准确度、 联系频率、 联系人姓名, 联系人电话号码四个 维度进行排序。 联系频率的计算使用累加短信记录个通话记录个数获得。
比较两个结果优先级算法如下:
α. 比较是否匹配的是号码, 将匹配号码的结果排在匹配姓名结果的后面。
b. 比较匹配度, 将值较小的结果排在前面。
c 比较联系频率, 将值较大的排在前面。
d. 最后比较姓名, 字符按照其第一个拼写字母串参与比较, 不能获取拼写串的字符使用 其 Unicode值进行比较。
int Comparetor: :Compare(MatchResult* left, MatchResult* right) const {
II 号码匹配的优先级最低
int diff = right->IsMatchByPhone() - left->IsMatchByPhone(); if(diff == 0) {
II 匹配度使用升序, 值越大优先级低。
diff = right->getAccuracy() - left->get Accuracy (); if (diff == 0){
II联系频率使用降序, 值越小匹配优先级越低。
diff = right->GetContact()->GetFrequency()
- left->GetContact()->GetFrequency(); if (diff == 0){
II最后按照姓名排序
diff = pDictEngine->CompareName(left->GetContact()->GetName(),
right->GetContact()->GetName()); return diff;
7. 高亮显示匹配结果。 将联系人姓名过滤结果的匹配部分高亮显示出来, 方便用户继续输 入字符或数字进一步过滤。
Matchltem matchitem;
while(result->Next(matchitem))
{
aGc.SetPenColor(matchitem.IsMatch()?ERgbTextMatchFocus:ERgbTextSearchFocus);
TPtrC txt(matchitem. GetText(), matchitem.GetLength());
aGc.DrawText(txt, pt);
pt.iX += font->TextWidthInPixels(txt);
}
图 2是采用本发明方法进行联系人查找过程的一具体实例。
关键字
字母: letter, 可布局到数字键盘, 可以连续点击数字进行输入。
字符: character, 本文中的 "字符"指文字中不能通过键盘直接输入, 但可以转换成特定 的字母串进行输入, 需要输入法支持。 如中文中的汉字。
字母拼写串: Spdl, 输入字符需要的特定字母序列。如汉字中的拼音、笔画、注音、仓颉, 日语中的假名读音等。

Claims

权利 要 求 书
1. 一种手持设备高效联系人查找方法, 其步骤为:
1 ) 建立一字符反查表, 用于保存需要转换成字母才能输入的字符;
2) 建立一数字键盘映射表, 用于保存字母与键盘数字之间的对应关系;
3 ) 利用所述字符反查表对通讯录中的联系人姓名进行分解, 得到姓名中的标点符号 S、 连续的字母串 L、字符 C及其字母拼写串 (Ll, L2,..,Ln), 并将分解结果保存到一链表结 构的顺序节点中;
4) 利用所述数字键盘映射表对链表中存储的姓名分解结果与用户输入的过滤字符串进行 匹配;
5 ) 返回包含匹配信息的联系人, 得到匹配的联系人列表。
2. 如权利要求 1所述的方法, 其特征在于所述字符反查表的字段包括: 文件类型标识、拼写 串缓存在文件中的存储起始位置、 字符节点在文件中的存储位置、 字符节点个数。
3. 如权利要求 2所述的方法, 其特征在于一个字符设置有一个或多个字母拼写串。
4. 如权利要求 1或 2或 3所述的方法,其特征在于将通讯录中的联系人姓名进行分解并保存 到链表中的方法为:
1 )获取姓名中每一个字符, 如果当前字符是一个字母, 将其添加到字母串缓存, 否则将 已缓存字母作为一个字母串节点, 添加到顺序节点中;
2)如果当前字符是可拼写的字符, 则将当前字符添加到一个字符节点; 同时获取当前字 符的字母拼写串, 并将每一个字母拼写串添加到一个字母串节点; 最后将字符节点和 字母串节点添加到一个分支节点中, 并将该分支节点添加到顺序节点中;
3 )如果当前字符是无法识别的字符, 则将其当作标点符号单独作为一个字符节点添加到 顺序节点中。
5. 如权利要求 4所述的方法,其特征在于将链表中存储的姓名分解结果与用户输入的过滤字 符串进行匹配的方法为:
1 ) 将顺序节点中存储的子节点依次与用户输入的过滤字符串进行匹配,并记录顺序节点 中每一个子节点与过滤串的匹配的状态信息; 其中, 如果当前子节点是字符节点, 则 将其存储的字符与过滤串当前字符直接进行比较, 如果是字母串节点, 则将其存储的 字母及字母对应于数字键盘上的数字分别与过滤串当前字符进行比较,如果是分支节 点, 则将其存储的字符节点或字母串节点与过滤串当前字符进行比较, 只要有一个节 点匹配成功就认为分支节点与过滤串匹配; 2) 使用下一个子节点与剩余部分过滤串的字符继续匹配, 如果能够匹配到过滤字符串的 结尾, 则认为本次匹配成功, 否则认为本次匹配失败。
6. 如权利要求 5所述的方法, 其特征在于所述匹配的状态信息包括: 子节点在顺序节点中的 位置, 分支节点的分支位置, 子节点与过滤字符串匹配的状态。
7. 如权利要求 4所述的方法,其特征在于所述字符节点按照字符的 Unicode值从小到大排列; 采用折半查找方法查找当前字符在所述字符反查表中对应的字母串;将姓名分解结果采用 正则文法表示为: SL(C|Ll|L2|..|Ln;)。
8. 如权利要求 5所述的方法, 其特征在于将匹配联系人中的匹配结果进行高亮显示, 并计算 匹配准确度, 根据匹配准确度对搜索结果排序。
9. 如权利要求 8所述的方法, 其特征在于计算所述匹配准确度的方法为:
1 ) 遍历解析后的节点串中每一个节点, 如果当前节点匹配就返回匹配精确度为 0, 否则 返回匹配精确度为 1 ;
2) 将匹配精确度返回值进行累加, 累加值愈大则匹配的准确度越低, 反之匹配度越高;
3 ) 将匹配精确度保存到匹配结果中。
10. 如权利要求 9所述的方法, 其特征在于根据匹配结果对匹配的联系人列表进行排序, 其方 法为: 首先根据匹配精确度对匹配联系人进行升序排序; 然后对于匹配精确度相同的联系 人根据联系频率进行降序排列,最后对于相同匹配精确度和相同联系频率的联系人根据姓 名排序。
PCT/CN2011/070054 2010-12-27 2011-01-06 一种手持设备高效联系人查找方法 WO2012088772A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2010106078711A CN102063482B (zh) 2010-12-27 2010-12-27 一种手持设备高效联系人查找方法
CN201010607871.1 2010-12-27

Publications (1)

Publication Number Publication Date
WO2012088772A1 true WO2012088772A1 (zh) 2012-07-05

Family

ID=43998758

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2011/070054 WO2012088772A1 (zh) 2010-12-27 2011-01-06 一种手持设备高效联系人查找方法

Country Status (2)

Country Link
CN (1) CN102063482B (zh)
WO (1) WO2012088772A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021030419A1 (en) * 2019-08-12 2021-02-18 Vyng, Inc. Methods and systems for management of media content associated with message context on mobile computing devices
US11394822B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Incentivising answering call in smartphone lockscreen
US11394824B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Adjusting presentation on smart phone lockscreen of visual content associated with metadata of incoming call
US11394821B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Curated search of entities from dial pad selections
US11394823B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Configuring business application for utilization of sender controlled media service
US11451659B2 (en) 2015-05-01 2022-09-20 Vyng Inc. Dynamic rewardable activity value determination and allocation

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102737105A (zh) * 2012-03-31 2012-10-17 北京小米科技有限责任公司 一种字典树生成方法及搜索方法
CN102710854A (zh) * 2012-05-18 2012-10-03 惠州Tcl移动通信有限公司 Android系统快速匹配拨号的方法及其移动终端
CN105450830A (zh) * 2014-08-05 2016-03-30 无锡买卖宝信息技术有限公司 联系人查询方法和装置
CN111159490B (zh) * 2019-12-13 2023-05-26 杭州迪普科技股份有限公司 一种模式字符串的处理方法、装置及设备
CN112765422B (zh) * 2021-01-18 2024-04-05 深轻(上海)科技有限公司 一种二维数据表格的查表方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1331448A (zh) * 2000-06-23 2002-01-16 王林 数字键盘输入信息的方法
CN101833381A (zh) * 2010-05-19 2010-09-15 北京友录在线科技发展有限公司 一种手持设备通讯录的拼音反查方法
CN101853280A (zh) * 2010-05-19 2010-10-06 北京友录在线科技发展有限公司 一种手持设备中联系人查找方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114312A1 (en) * 2003-11-26 2005-05-26 Microsoft Corporation Efficient string searches using numeric keypad
CN100502429C (zh) * 2005-04-22 2009-06-17 英华达(上海)电子有限公司 手机电话簿中电话号码智能查询方法
CN101676911A (zh) * 2008-09-18 2010-03-24 深圳富泰宏精密工业有限公司 联系人查找系统及方法
CN101741948A (zh) * 2008-11-19 2010-06-16 龙旗科技(上海)有限公司 信息收件人实现输入数字自动匹配联系人的方法
CN101888427B (zh) * 2009-05-12 2015-03-11 中国移动通信集团公司 拨号姓名匹配方法及终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1331448A (zh) * 2000-06-23 2002-01-16 王林 数字键盘输入信息的方法
CN101833381A (zh) * 2010-05-19 2010-09-15 北京友录在线科技发展有限公司 一种手持设备通讯录的拼音反查方法
CN101853280A (zh) * 2010-05-19 2010-10-06 北京友录在线科技发展有限公司 一种手持设备中联系人查找方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11394822B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Incentivising answering call in smartphone lockscreen
US11394824B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Adjusting presentation on smart phone lockscreen of visual content associated with metadata of incoming call
US11394821B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Curated search of entities from dial pad selections
US11394823B2 (en) 2015-05-01 2022-07-19 Vyng Inc. Configuring business application for utilization of sender controlled media service
US11451659B2 (en) 2015-05-01 2022-09-20 Vyng Inc. Dynamic rewardable activity value determination and allocation
US11936807B2 (en) 2015-05-01 2024-03-19 Digital Reef, Inc. Dynamic rewardable activity value determination and allocation
WO2021030419A1 (en) * 2019-08-12 2021-02-18 Vyng, Inc. Methods and systems for management of media content associated with message context on mobile computing devices

Also Published As

Publication number Publication date
CN102063482A (zh) 2011-05-18
CN102063482B (zh) 2013-03-06

Similar Documents

Publication Publication Date Title
WO2012088772A1 (zh) 一种手持设备高效联系人查找方法
CN107145571B (zh) 一种搜索方法及装置
US7277029B2 (en) Using language models to expand wildcards
CN100361052C (zh) 在电子装置的用户界面中输入单词的方法及装置
JP4037608B2 (ja) 減少されたキーボード明瞭化システム
US7477165B2 (en) Handheld electronic device and method for learning contextual data during disambiguation of text input
WO2008037216A1 (en) Method and device for information positioning
US8099416B2 (en) Generalized language independent index storage system and searching method
CN101876878A (zh) 单词预测输入系统及方法
JP2009116900A (ja) 曖昧なテキスト入力の明確な文字フィルタリング
US20150293975A1 (en) Method and device for searching for contact object, and storage medium
US7395512B2 (en) Character input system and communication terminal
US20160371251A1 (en) English input method and input device
JP2004094916A (ja) 問題解決支援システム、問題解決支援方法、及びプログラム
US8612210B2 (en) Handheld electronic device and method for employing contextual data for disambiguation of text input
CN102999639B (zh) 一种基于语音识别字符索引的查找方法及系统
CN103020306A (zh) 一种基于手势识别字符索引的查找方法及系统
US7716195B2 (en) Search methods
JP4004060B1 (ja) 文字検索方法
CN106776599B (zh) 一种黄页通讯信息的搜索方法、装置、黄页平台及终端
Higashida et al. One touch character: a simplified japanese character input method for mobile computing
CA2619423C (en) Handheld electronic device and associated method for obtaining new language objects for use by a disambiguation routine on the device
CN103685678A (zh) 一种搜索联系人的方法及装置
CN102647503A (zh) 一种联系人信息处理方法及移动终端
CN102982187A (zh) 一种基于体感识别字符索引的查找方法及系统

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11852289

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11852289

Country of ref document: EP

Kind code of ref document: A1