nutch

จากประกาศการเปลี่ยนแปลง ใน Lucene 2.1 บัดนี้ Lucene ก็สามารถ search ภาษาโดยตัดคำให้ด้วยได้แล้ว โดยที่ไม่ต้องเล่นท่าเอา nightly build มาใส่ สำหรับ Nutch ก็รอให้ใช้ Lucene 2.1 แล้วอีกไม่นานก็คงใช้ภาษาไทยได้อย่างเป็นทางการเหมือนกัน :-)

New features

1. LUCENE-503: New ThaiAnalyzer and ThaiWordFilter in contrib/analyzers
(Samphan Raruenrom via Chris Hostetter)





edit @ 2007/03/16 16:07:45
edit @ 2007/03/22 14:48:48
เนื่องจาก Nutch ถ้าไม่ระบุภาษาขณะที่ search ว่าเป็นภาษาไทย มันจะไม่ตัดคำให้ ผมก็เลยไปแก้ code ไป force ให้เป็นภาษาไทยเลย ซึ่งออกจะเป็นวิธีที่แย่ๆ แต่ว่าพอถูกไถใช้ไปได้


Index: jsp/search.jsp
===================================================================
--- jsp/search.jsp (revision 504050)
+++ jsp/search.jsp (working copy)
@@ -106,8 +106,9 @@
int hitsToCluster = HITS_TO_CLUSTER; // number of hits to cluster

// get the lang from request
- String queryLang = request.getParameter("lang");
- if (queryLang == null) { queryLang = ""; }
+ //String queryLang = request.getParameter("lang");
+ //if (queryLang == null) { queryLang = ""; }
+ String queryLang = "th"; //FIXME: Thai workaround
Query query = Query.parse(queryString, queryLang, nutchConf);
bean.LOG.info("query: " + queryString);
bean.LOG.info("lang: " + queryLang);
Index: jsp/explain.jsp
===================================================================
--- jsp/explain.jsp (revision 504050)
+++ jsp/explain.jsp (working copy)
@@ -35,7 +35,9 @@
HitDetails details = bean.getDetails(hit);
// get the lang from request
// get the lang from request
- String queryLang = request.getParameter("lang");
+ //String queryLang = request.getParameter("lang");
+ String queryLang = "th"; // Thai workaround
+
if (queryLang == null) { queryLang = ""; }
Query query = Query.parse(request.getParameter("query"), queryLang, nutchConf);
String language =



และอีกไฟล์


Index: org/apache/nutch/searcher/OpenSearchServlet.java
===================================================================
--- org/apache/nutch/searcher/OpenSearchServlet.java (revision 504050)
+++ org/apache/nutch/searcher/OpenSearchServlet.java (working copy)
@@ -84,7 +84,8 @@
String urlQuery = URLEncoder.encode(queryString, "UTF-8");

// the query language
- String queryLang = request.getParameter("lang");
+ //String queryLang = request.getParameter("lang");
+ String queryLang = "th"; //FIXME: Wordaround

int start = 0; // first hit to display
String startString = request.getParameter("start");


จริงๆก็งงว่าต้องแก้ไฟล์ไหนบ้างก็แก้ไปหมดเลยที่มี queryLang

[ สืบเนื่องมากจาก ตอนที่ 1 Thai Analyzer ]


edit @ 2007/02/10 21:34:49

Nutch (search engine) + ภาษาไทย

posted on 07 Feb 2007 16:12 by veer
ผมลองเอา Nutch ที่เป็น search engine ในโครงการ Apache Lucene ที่มีทั้ง web crawler, indexer, searcher และ web interface ในตัว มาลองใช้ดู ปรากฎว่ามันใช้ภาษาไทยไม่ค่อยจะได้ ปัญหาในจุดแรกเลยก็คือ indexer ซึ่งก็แก้ได้เลยการสร้าง Thai Analyzer Plugin สำหรับ indexer ขึ้นมา โดยเอา French Analyzer Plugin (ที่ไปเรียก French Analyzer Plugin ใน Lucene) มาแก้อีกที

ไม่รู้จะ upload patch ไว้ที่ไหนผมเลยเปิด issue ใหม่ใน JIRA เลย https://issues.apache.org/jira/browse/NUTCH-441 เข้าไปโหลดได้เลยนะครับ

มีปัญหานิดหน่อยว่า ต้องใช้ lucene-analyzers-nightly.jar แทน lucene-analyzers-2.0.0 เพราะว่า lucene 2.0.0 ยังไม่มี Thai Analyzer ผมก็ copy มาทับซะก็เป็นอันใช้ได้

แต่ว่าเจอปัญหาอีกนิดคือมันใส่ lang=en ใน URL ให้อัตโนมัติ ถ้าแก้แบบเฉพาะหน้าก็ใช้ lang=th ไปแทนก็ใช้ได้ :-P

edit @ 2007/02/07 22:05:40
edit @ 2007/02/08 16:50:03
edit @ 2007/02/08 17:43:26