Jive筆記2----關於Jive2中的中文搜尋 (轉)
Jive筆記2----關於Jive2中的中文搜尋 (轉)[@more@]Jive雖然構架不錯,可是在中文處理上,實在可以算是垃圾。Lucene也是如此。最新版的Lucene1.2RC2中,queryParser類竟然只能處理A-Z|a-z|0-9的搜尋。如果輸入了中文,就給你扔出一個“Lexial parse Error”的錯誤。而且,E文中的Key是根據空格區分,這不適用於中文,所以一般採用基於字典的斷詞或者OverLapped斷詞。瞭解了上面的情況,我們就可以開始修改Lucene以實現中文搜尋了。
(1)修改queryParser.jj,修改裡邊的詞法定義,以適應Unicode雙位元組。QueryParser是由CC生成的,建議瞭解一下JavaCC的語法,和EBNF概念相似。
(2)編寫一個自己的Analyzer和Tokenizer。這裡我從Lucene的 List中搞到了一個ChineseTokenizer.java,自己根據StandardAnalyzer.java寫了一個ChineseAnalyzer.java。我們將用這個分析器用Overlapped方式切割一個完整的中文語句。
(3)修改Jive2中的Query.java和SearchManager.java,
將imoprt com.lucene.*...改成import org..lucene.*...
將裡邊的StandardAnalyzer改成ChineseAnalyzer
(4)編譯,啟動Jive,Rebuild index.現在,你的Jive2就能支援中文搜尋了
注意:
Jive和AppServer必須在中文環境下執行。比如中文的NT/2000或者在/下邊設定export LC_ALL=zh_CN.
同時,Global.中加上request.setCharacterEncoding("gb2312");
分別給相關的頁面加上contentType="text/html;charset=gb2312".這樣可以不改動應付絕大多數AppServer,包括垃圾4.0.1。
還有,修改dbURL為:my://localhost/jive2?useUnicode=true&characterEncoding=gb2312
附:
修改的
QueryParser.jjzh
ChineseAnalyzer.java
zhChineseTokenizer.java
三個的Zip包
我是憑著記憶寫的。講得很模糊,也許老手不屑一顧,新手死活看不懂。對不住了,我的表達能力很差的。
Good Luck!
(1)修改queryParser.jj,修改裡邊的詞法定義,以適應Unicode雙位元組。QueryParser是由CC生成的,建議瞭解一下JavaCC的語法,和EBNF概念相似。
(2)編寫一個自己的Analyzer和Tokenizer。這裡我從Lucene的 List中搞到了一個ChineseTokenizer.java,自己根據StandardAnalyzer.java寫了一個ChineseAnalyzer.java。我們將用這個分析器用Overlapped方式切割一個完整的中文語句。
(3)修改Jive2中的Query.java和SearchManager.java,
將imoprt com.lucene.*...改成import org..lucene.*...
將裡邊的StandardAnalyzer改成ChineseAnalyzer
(4)編譯,啟動Jive,Rebuild index.現在,你的Jive2就能支援中文搜尋了
注意:
Jive和AppServer必須在中文環境下執行。比如中文的NT/2000或者在/下邊設定export LC_ALL=zh_CN.
同時,Global.中加上request.setCharacterEncoding("gb2312");
分別給相關的頁面加上contentType="text/html;charset=gb2312".這樣可以不改動應付絕大多數AppServer,包括垃圾4.0.1。
還有,修改dbURL為:my://localhost/jive2?useUnicode=true&characterEncoding=gb2312
附:
修改的
QueryParser.jjzh
ChineseAnalyzer.java
zhChineseTokenizer.java
三個的Zip包
我是憑著記憶寫的。講得很模糊,也許老手不屑一顧,新手死活看不懂。對不住了,我的表達能力很差的。
Good Luck!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958255/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Jive筆記1--關於Jive1中的驗證和相關類的呼叫 (轉)筆記
- 解決jive搜尋結果中的中文搜尋字串高亮度顯示的方法字串
- Jive筆記7 -- Jive的硬傷 (轉)筆記
- 誰有jive2。0以前的版本?
- ES 筆記十八:搜尋的相關性算分筆記
- ES 筆記十六:基於詞項和基於全文的搜尋筆記
- 關於搜尋地址的問題
- 折半搜尋學習筆記筆記
- 關於mongodb和搜尋引擎??MongoDB
- 搜尋Oracle DDL中的關鍵字Oracle
- 搜尋檔案中的關鍵字
- Jive筆記8--查詢的Bug (轉)筆記
- Jive筆記3----Jive2.1.1 License保護原理分析 (轉)筆記
- 關於jive中ForumFactory.getInstance()的困惑
- ES 筆記十七:結構化搜尋筆記
- 【JavaScript學習筆記】呼叫google搜尋JavaScript筆記Go
- 搜尋引擎Nutch 0.7.2 試用筆記筆記
- vue2實現搜尋結果中的搜尋關鍵字高亮Vue
- 使用Jive3.1.1時,中文搜尋時出現亂碼,請問如何解決?
- 關於jive的安裝
- Nebula 基於 ElasticSearch 的全文搜尋引擎的文字搜尋Elasticsearch
- Laravel + Elasticsearch 實現中文搜尋LaravelElasticsearch
- MSSQL中按照日期來搜尋記錄.SQL
- 從谷歌搜尋中複製貼上URL,會洩露之前的搜尋記錄谷歌
- 從谷歌搜尋中複製貼上URL 會洩露之前的搜尋記錄?谷歌
- 關於JIVE原始碼!原始碼
- 關於linux的啟動流程的筆記(轉)Linux筆記
- 請教關於Jive中過濾器的問題過濾器
- 中文搜尋引擎技術揭密:中文分詞中文分詞
- ionic2/ionic3 實現搜尋結果中的搜尋關鍵字高亮
- ES[7.6.x]學習筆記(九)搜尋筆記
- 演算法筆記(廣度優先搜尋)演算法筆記
- 可搜尋加密技術 - 學習筆記(一)加密筆記
- Jive筆記6 --Database Package下面的暗黑世界 (轉)筆記DatabasePackage
- MySQL 4.1.0 中文參考手冊 --- 6.8 MySQL 全文搜尋 (轉)MySql
- mysql的中文全文搜尋實踐(二)薦MySql
- 關於jive安裝的問題
- 關於jive的設定問題