說明工作原理:
例子:對於查詢
"我可以理解你嗎"
拆分為"我可","可以","以理","理解","解你","你嗎"
查詢到兩個符,則權值加上相應的值:"我可"+1,"可以"+2,"以理"+3,"理解"+4,"解你"+5,"你嗎"+6.
以下為mysql的儲存過程:
create definer=`root`@`localhost` procedure `proc_getfeearea`(paddress varchar(800))
begin
/*通過函式間接取得儲存過程的值*/
declare addresslen,i int default 1; /*申明變數*/
set addresslen=char_length(trim(paddress));
set @casestr='';/*通過臨時字串方式得到資料的where條件*/
set @wherestr='';/*查詢條件過濾*/
if(addresslen>1) then
while i<=addresslen-1 do
/*通過select的權重條件*/
set @casestr=concat(@casestr,'case when instr(a.addressname,',char(39),substring(paddress,i,2),char(39),')>0 then ',11-i,' else 0 end+');
/*通過where的過濾條件*/
set @wherestr=concat(@wherestr,' instr(a.addressname,',char(39),substring(paddress,i,2),char(39),')>0 or');
set i=i+1;
if(i>10) then
set i=addresslen+1;/*跳出迴圈*/
end if;
end while;
/*去除最後的+號*/
set @casestr=substring(@casestr,1,char_length(trim(@casestr))-1);
/*去除最後的or*/
set @wherestr=substring(@wherestr,1,char_length(trim(@wherestr))-2);
/*組合查詢的sql語句*/
set @sql=concat('select a.mail_feearea,concat(a.send_office,',char(39),'(',char(39),',a.city_name,',char(39),',',char(39),',a.county_name,',char(39),')',char(39),') send_office,(',@casestr,') seqn from td_mailfeearea a where ',@wherestr,' order by seqn desc ');
else
set @sql=concat('select ',char(39),char(39),' mail_feearea,',char(39),char(39),' send_office,',char(39),char(39),' seqn ');
end if;
prepare stmt from @sql;
execute stmt ;
/*select @sql;*/
end
一種面向搜尋引擎的中文切分詞方法
首先說一下搜尋引擎切分詞的產生的原因。在進行全文檢索時,首先將要檢索的內容分割成較短的文字序列。然後生成在每個文字序列中所包含字串的對應表 索引 當輸入檢索語句後,也同樣進行分割,與索引進行比較。也就是說,兩者即使包含有同樣的文字排列,但分割方法不同的話也不能正確檢索。文字的分割方法主要有兩種,分別...
搜尋引擎(2) 查詢理解 分詞
分詞是搜尋中最基本也是非常重要的乙個功能,正確的分詞是好的搜尋效果的必要條件。1.分詞粒度 分詞中,最主要的問題是分詞粒度問題。例如 射鵰英雄傳 下面的幾種分詞方式,哪一種最正確?最細粒度分詞 射鵰,英雄,傳 正常粒度分詞 射鵰,英雄傳 最粗粒度分詞 射鵰英雄傳 混合粒度分詞 射鵰,射鵰英雄傳,英雄...
中文分詞和搜尋引擎(一)
最近這個專案有個難點就是要用到搜尋引擎,而這裡最難的就是分詞技術,我從網上找了一些分詞的資料,在這裡 一下。目前的搜尋引擎,大多是基於一種稱為倒排索引的結構 1 以什麼做為索引的key值,直接影響到整個搜尋引擎的準確度 召回率 2 速度。我們先看看不使用中文分詞的情況。如果不使用中文分詞,可以採用單...