Tags:
Forums: 

ใช้วิธีอะไร ค้นหาข้อความที่มีอักษรพิเศษแทรกดี ครับ ?

เช่น

ขอนอบน้อม แด่พระผู้มีพระภาคองค์นั้น ผู้กำจัด<_b_>กิเลสแล้ว</b> ตรัสรู้อย่างถูกต้องได้เอง

ขอนอบน้อม แด่พระผู้มีพระภาคองค์นั้น ผู้กำจัดกิเลสแล้ว ตรัสรู้อย่างถูกต้องได้เอง

ขอนอบน้อม แด่พระผู้มีพระภาคองค์นั้น ผู้กำจัดกิเลสแล้ว "ตรัสรู้อย่างถูกต้องได้เอง"

ตัวอย่างข้างต้น ถ้าจะหาคำว่า "ผู้กำจัดกิเลสแล้ว ตรัสรู้อย่างถูกต้องได้เอง" ตรงๆด้วย string.find("xxx") มันจะไม่เจออ่ะ ครับ

เพื่อนๆ มีวิธีไหนบ้าง... เช่น regular expression เป็นต้น ครับ

Get latest news from Blognone
By: adente
ContributorSUSESymbianWindows
on 25 July 2011 - 21:14 #314663
adente's picture

regular expression น่าจะเหมาะกับพวกประโยคคำที่เป็น pattern ของมันเองมากกว่า พวก URL, Email อะไรอย่างนี้

ที่ผมเคยทำก็ให้มันอ่านที่ละตัวอักษรไล่ไป ถ้าเจอก็เก็บตัวอักษรนั้นไว้ในตัวแปร แล้วก็อ่านต่อไปเรื่อยๆ ปัญหาก็คือผมทำนะเป็นภาษาอังกฤษ และประโยคตัวอย่างนี้ยาวนะ มันจะหายากสิครับ

By: anu
Contributor
on 25 July 2011 - 21:21 #314669

ใช้วิธีตัดอักขระพิเศษทั้งหมดออก เหลือแต่ ก-ฮ a-z A-Z 0-9 สระทั้งหลาย แล้วค่อยค้นหาซิครับ

By: lew
FounderJusci&#039;s WriterMEconomicsAndroid
on 25 July 2011 - 21:26 #314674
lew's picture

ถ้าอยากหาคำโดยมองข้ามอักขระพิเศษ ให้ filter อักขระพิเศษทิ้งออกไปก่อนง่ายกว่าครับ


lewcpe.com, @wasonliw

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 26 July 2011 - 13:02 #314968 Reply to:314674

เห็นด้วยคับ ผมก็ว่าน่าจะตัดทิ้งไปให้หมดก่อน ค่อยหา

By: อุ๊บะอันตะอู้
Windows PhoneAndroidSymbianUbuntu
on 25 July 2011 - 21:39 #314683
อุ๊บะอันตะอู้'s picture

ถ้าใช้ regular expression filter ทุกบรรทัด มันจะช้าไหม ครับ

ข้อมูล txt เกือบ 1 gig

By: tuckclub on 25 July 2011 - 22:19 #314711 Reply to:314683

เยอะขนาดนั้น ใช้ lucene เถอะครับ ทำ index ครั้งเดียว แล้วจะค้นกี่ครั้งแบบไหนก็ได้ตามใจชอบ

By: อุ๊บะอันตะอู้
Windows PhoneAndroidSymbianUbuntu
on 28 July 2011 - 14:51 #315623
อุ๊บะอันตะอู้'s picture

ขอบคุณ ทุกท่าน ครับ, เดี๋ยวจะลอง http://www.whoosh.org ดู ครับ.

ไม่งั้นก็อาจเป็น ปลั๊กอินของ sqlite add ใน python ครับ.

ว่าแต่ว่า sqlite plugin มันลงใน python portable 2.7 ได้ไหม ครับ ?