一種模糊查詢,應用搜尋引擎的分詞機制

2021-05-05 03:44:10 字數 1724 閱讀 8203

說明工作原理:

例子:對於查詢

"我可以理解你嗎"

拆分為"我可","可以","以理","理解","解你","你嗎"

查詢到兩個符,則權值加上相應的值:"我可"+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 速度。我們先看看不使用中文分詞的情況。如果不使用中文分詞,可以採用單...