qt在新版本中整合了qtlucene的元件,單位的機器qt版本不夠,也懶得公升級。先看一下中文切分詞部分。
目的:對文件進行中文切分,並根據詞頻高低排序。
選擇libmmseg作為切分詞元件。
./bootstrap
./configure --/prefix=/opt/mmseg
make
make install
完畢,在qtcreator中新建專案,因為mmseg只提供了客戶端開發文件,並未提及切分詞部分的呼叫方法,暫時從 source code : src/mmseg_main.cpp 順藤摸瓜。
以上**為實現demo:
專案檔案:
qt += core webkit network
sources += main.cpp \
mmseg_main.cpp
headers +=
libs += -l/opt/mmseg/lib -lmmseg
includepath = /opt/mmseg/include/
main.cpp
int main(int argc, char *argv)
; char* tok = (char*)seg->peektoken(len, symlen);
seg->poptoken(len);
if(seg->issentenceend())while(kwsymlen);
}if(len == 3 && memcmp(tok,txthead,sizeof(char)*3) == 0)else
while(1)while(kwsymlen);
}if(*tok == '\r')
continue;
if(*tok == '\n')
//printf("[%d]%*.*s/x ",len,len,len,tok);
// printf("%*.*s/x ",symlen,symlen,tok);
// char word[20];
// sprintf(word, "%*.*s",symlen,symlen,tok);
// printf("%s/[%d-%d] ", word,symlen,symlen);
addmap(tok, symlen, map);
//check thesaurus
}//printf("%s",tok);
}delete mgr;
return map;
}void addmap(const char* str, int len, map&map)
int cmp(const pair& a, const pair& b)
void sortmapbyvalue(map& tmap, vector>& tvector)
sort(tvector.begin(),tvector.end(),cmp);
}輸出結果:
6 的
3 應用
3 檢索
3 全文
3 系統
2 資料庫
2 ,2 。
1 能1 補充
1 採用
1 極大
1 有力
1 替代
1 是1 時
1 文字
1 提公升
1 資料
1 1 技術
1 當1 並不
1 大量
1 在1 可以
1 資訊
1 作用
1 價值
1 以1 為主
1 中
MySQL 5 7 中文全文檢索使用教程
在mysql 5.7.6之前,全文索引只支援英文全文索引,不支援中文全文索引,需要利用分詞器把中文段落預處理拆分成單詞,然後存入資料庫。從mysql 5.7.6開始,mysql內建了ngram全文解析器,用來支援中文 日文 韓文分詞。本文使用的mysql 版本是5.7.22,innodb資料庫引擎。...
文字蘊含日記1 中文分詞
1 什麼是分詞 分詞是指將連續的字序列按照一定的規範重新組合成詞序列的過程。簡而言之,就是將乙個句子中的字重新劃分組合成詞。2 為什麼要強調中文分詞技術 之所以特地強調中文分詞,是因為中文在行文上的特殊性。以英文為代表的拉丁語系語言,英文以空格作為天然的分隔符,而中文詞語之間沒有分隔。古代漢語中除了...
PHP下MySQL UTF8中文全文檢索的實現
現在的 網際網路上,很多 都提供了全文搜尋功能,瀏覽者可以通過輸入關鍵字或者是短語來搜尋特定的資料。在php mysql構架的 中,通常的做法是通過select查詢的like語句來進行搜尋,這一辦法存在搜尋不夠精確 以及效率非常低下的缺點。比如對一 個有十幾萬條記錄資料表的text欄位進行like操...