2021年3月14日 星期日

利用MySQL全文搜尋的BOOLEAN MODE排除某些字元

目的:
搜尋java字元時,須排除JavaScript和Javanese

參考以下這邊文章
https://medium.com/@changhengliou/%E7%94%A8mysql-fulltext-search%E5%BB%BA%E7%AB%8B%E7%B0%A1%E6%98%93%E6%90%9C%E5%B0%8B%E5%BC%95%E6%93%8E-80659c28ec19
先到https://dumps.wikimedia.org/enwiki/latest/下載enwiki-latest-pages-articles.xml.bz2
(繁中 https://dumps.wikimedia.org/zhwiki/latest/ )
使用bzip2 -d enwiki-latest-pages-articles.xml.bz2指令解壓縮後
再用wikiextractor匯出成json格式(需要執行很久)
指令wikiextractor --json /wikidump/rawdata/enwiki-latest-pages-articles.xml
再用原作者的工具sqlgen匯入MySQL資料庫(需要執行很久)








SELECT `url` ,`title` , `text`
FROM `PagesArticles20210302`
WHERE MATCH(`title`, `text`) AGAINST ('Java' IN NATURAL LANGUAGE MODE)
AND
MATCH(`title`, `text`) AGAINST ('>eclipse >netbean -javaese -javanese -JavaScript'  IN BOOLEAN MODE);
-- 說明: -javanese:表示排除這個字元;>eclipse表示增加這個字元權重;< xxyy表示減少這個字元權重

ref:
https://dev.mysql.com/doc/refman/8.0/en/fulltext-boolean.html

沒有留言:

張貼留言