public int dissect(Collector collector, CharSequence beaf, int offset) {
if (CharSet.isCjkUnifiedIdeographs(beaf.charAt(beaf.length() - 1))
&& offset > 0 && beaf.length() - offset < 50){
return -offset;
}
Dictionary vocabulary = factory.getVocabulary();
/* ����:�����ס�ڱ�����ˮ̶�Ÿ��� */
// setup��end���ڹ涨��֮��������Ƿ�Ϊ�ʵ����
int setup, end;
// ΪunidentifiedIndex����Ϊ���ҳ��Ĵ������λ�õ�����ߣ�e.g '��','��','��','��'
int identifiedEnd = offset;
// ���ڶ�λδ�ִܷʵĿ�Ŀ�ʼλ�ã�e.g '��'
int unidentifiedIndex = -1;
//���ڸ����ж��Ƿ����shouldAWord()����
int maxWordLength = 0;
Hit word = null;
for (setup = offset, end = offset; setup < beaf.length()
&& CharSet.isCjkUnifiedIdeographs(beaf.charAt(setup)); end = ++setup) {
for (int count = 1; end < beaf.length()
&& CharSet.isCjkUnifiedIdeographs(beaf.charAt(end++)); count++) {
//��һ��forѭ��ʱ��end=setup+1
word = vocabulary.search(beaf, setup, count);
if (word.isUndefined()) {
if (unidentifiedIndex < 0 && setup >= identifiedEnd) {
unidentifiedIndex = setup;
}
break;