summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2016-07-12 11:46:18 +0800
committerPeng Wu <alexepico@gmail.com>2016-07-12 11:46:18 +0800
commit39967d2724bfadb25ad380a9c7a8f81d700e6c79 (patch)
treeb431d8318f98124a9e6832e77efc0b775736384e
parentf043223306836ab25dce6526faba4448fe14d060 (diff)
downloadlibpinyin-39967d2724bfadb25ad380a9c7a8f81d700e6c79.tar.gz
libpinyin-39967d2724bfadb25ad380a9c7a8f81d700e6c79.tar.xz
libpinyin-39967d2724bfadb25ad380a9c7a8f81d700e6c79.zip
fixes get_best_match again
-rw-r--r--src/lookup/pinyin_lookup2.cpp20
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);