qt整合全文檢索功能 1 中文分詞以及獲得詞頻

2021-06-16 07:14:27 字數 1888 閱讀 7128

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操...