diff options
author | Peng Wu <alexepico@gmail.com> | 2016-07-12 11:46:18 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2016-07-12 11:46:18 +0800 |
commit | 39967d2724bfadb25ad380a9c7a8f81d700e6c79 (patch) | |
tree | b431d8318f98124a9e6832e77efc0b775736384e /src/lookup | |
parent | f043223306836ab25dce6526faba4448fe14d060 (diff) | |
download | libpinyin-39967d2724bfadb25ad380a9c7a8f81d700e6c79.tar.gz libpinyin-39967d2724bfadb25ad380a9c7a8f81d700e6c79.tar.xz libpinyin-39967d2724bfadb25ad380a9c7a8f81d700e6c79.zip |
fixes get_best_match again
Diffstat (limited to 'src/lookup')
-rw-r--r-- | src/lookup/pinyin_lookup2.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/lookup/pinyin_lookup2.cpp b/src/lookup/pinyin_lookup2.cpp index dd5391d..264ec7b 100644 --- a/src/lookup/pinyin_lookup2.cpp +++ b/src/lookup/pinyin_lookup2.cpp @@ -257,12 +257,30 @@ bool PinyinLookup2::get_best_match(TokenVector prefixes, if (0 == topresults->len) continue; + if (CONSTRAINT_ONESTEP == cur_constraint->m_type) { + int m = cur_constraint->m_end; + + m_phrase_index->clear_ranges(ranges); + + /* do one pinyin table search. */ + int retval = search_matrix(m_pinyin_table, m_matrix, + i, m, ranges); + + if (retval & SEARCH_OK) { + /* assume topresults always contains items. */ + search_bigram2(topresults, i, m, ranges), + search_unigram2(topresults, i, m, ranges); + } + + continue; + } + for ( int m = i + 1; m < nstep; ++m ){ lookup_constraint_t * next_constraint = &g_array_index (m_constraints, lookup_constraint_t, m); if (CONSTRAINT_NOSEARCH == next_constraint->m_type) - continue; + break; m_phrase_index->clear_ranges(ranges); |