[How 2 solr search simply] สร้างระบบค้นหาที่ไวกว่า mysql

สืบเนื่องมากจากหลายวันมานี่ผมได้หมกมุ่นอยู่กับเรื่องการทำ ระบบค้นหาโดยใช้ Engine : Solr การทำงาน ความหมายมันคร่าว ๆน่ะครับ

  • เป็นภาษา java โดยกำเหนิด แน่นอนอยู่แล้วว่าเรื่องความไวมากกว่า PHP ที่ใช้อยู่
  • เป็นระบบ Full text search แปลแบบบ้าน ๆ ให้เข้าใจคือมันหาเป็นคำ ๆ นั่นเอง 
  • ไม่มีการ Relationship ความสัมพันธ์ใด ๆ ทั้งสิ้นเพราะว่ามันคือ NO-sql 
  • มันทำ Collection ได้
  • อื่น ๆ ไปหาอ่านเอาแล้วกันครับ 
เอาล่ะสำหรับคนที่เคยเขียนจาวามาคงมีสัญชาติญานทั่วไปว่ามันต้องทำงานยังไง ติดตั้งมันยังไงเมื่อท่านได้เห็นไฟล์แน่ ๆ คงไม่ลำบากอะไรมากนัก ปล.หากท่านติดตั้งไม่ได้ก็หาอ่านได้ทั่วไปตาม wiki มีคนเขียนไวเยอะมาก ๆ ผมคงไม่เขียนซ้ำ ที่อยากจะแชร์วันนี้คือ วิธีการต่อมันกับ PHP ที่ใช้อยู่ว่าทำอย่างไร มีอะไรบ้าง  ตอนที่ผมกำลัง ผมก็ งง เรื่องนี้มากว่า เห้ยจะฟิวเตอร์มันอย่างไรและเอามากกว่าหนึ่งเงื่อนไขต้องทำอย่างไรบ้าง 

หากท่าน RUN Solr ได้แล้วมาต่อกัน หากยังไม่ได้ก็พยายามต่อไป นี่คือ parameter พื้นฐานที่ต้องรู้เมื่อต้องการใช้ Solr 
  • q = keyword แล้วแต่คำที่ต้องการหานั่นเองบ้าน ๆ 
  • qt = keyword จะต่างกันจากตัวแรกคือแบบ เมิงใส่มาผิดกันก็จะอรวยให้ผ่านไปได้ 
  • wt  = format response  ที่ผมใช้อยู่มีสองอันคือ json & xml แต่มันก็ทำอย่างอื่นได้(หาอ่านเอา)
  • fq=  ฟิวเตอร์คิวรี่ การกรองการค้นหานั้นเอง 
  • facet = การจัดกลุ่ม ตอนนี้ที่ใช้ ให้เปิดฟังก์ชั่นมันก่อน คือ facet.on แค่นี้ง่าย ๆ
  • facet.field = เปิดแล้วก็มานับต่อว่าจะเอาฟิวไหนมาจัดกลุ่มบ้าง
  • field:[start %20 TO %20end] = รูปแบบการหาrange ของมันใช้กับพวก เงิน ช่วงเวลา หรืออื่น ๆ %20 อย่างงว่าคืออะไร มันคือ ไว้เสป หรือช่องว่างนั้นเองมีแค่นั้น 
  • fl = field ที่อยากได้ ถ้าเป็น sql ก็ประมาณว่า select name, username ,xxxx from ไม่ใช่ select * นั้นเอง แต่หากไม่ระบุ fl ค่าโดยปริยายคือ ทั้งหมด สตาร์นั่นเอง
  • rows = ก็คือ แถว แปลง่ายๆ มันใช้คู่กับ start แต่ start ไม่ใช่ก็ได้   เอาชัด ๆ น่ะ rowเอส คือบอกว่าท่านอยากให้มัน แสดงแถวล่ะเท่าไหร่ ? ไว้ทำเพจจิเนชั่น
  • select default for search
เอาล่ะ พารามิเตอร์คร่าว ๆ ก็ทั้งหมดแล้วกระมั้งที่จำเป็นจะต้องรู้ ตัวอื่น ๆ ก็ไปหาอ่านแล้วกัน เพราะมีเขียนไวอยู่แล้ว คำถามคือหากจะต้องการ ต่อ php เข้ากับ solr ทำอย่างไร จริง ๆ แล้วตัวมันเองเหมือนกับว่าทำหน้าที่เป็น  api ไว้อยู่แล้วน่ะเรียกว่าพร้อมเลยก็ได้ ขอให้เมิงบอก มาให้ถูกว่าอยากได้อะไร แค่นั้น วิธีการต่อทำได้ เท่าที่คิดได้ตอนนี้มี 4 รูปแบบ 
  1. ติดตั้ง extension php  solr 
  2. Restfull client 
  3. file_get_contents 
  4. CURL()
หากท่านติดตั้งเสร็ดแล้วคงจะเห็นภาพที่ชัดเจนมากขึ้นว่าจะเอาข้อมูลที่ได้มาไปใช้ยังไง โดยสัญชาติญานของ โปรแกรมเมอร์แล้วมันก็ไม่ลำบากอะไร เวอร์ชั่นต่อไปผมจะเอา ตัวอย่างการใส่ข้อมูลแบบเยอะๆ หลักแสน หลัก ล้าน การสร้าง สกีม่า ลองไปหาอ่านแล้วกันเรื่องพวกนี้ไม่ยากเท่าไหร่ ผมจะแชร์ในรูปแบบที่เป็นประสบการณ์ที่ตัวเองทำแล้วมีปัญหาแล้ว ผมต้องมาเสียเวลาทำวิจัยลองผิดลองถูกนั้นเอง
ตย. http://localhost/solr:[port]/colletions-name/select?qt=max&fq=name:samark+name:max&fq=room:5+room3&fq=address:swang+address:dindang&facet.on&facet.field=group&facet.filed=province&wt=json&rows=10&start=1

ลองดูนะครับ 
Share on Google Plus

About maxcom

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

1 ความคิดเห็น:

  1. เป็นประโยชน์มากค่ะพี่ อยากให้แชร์การทำmodule Search engineมากๆเลยค่ะ

    ตอบลบ