Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लारवेल स्काउट और अल्गोलिया के साथ बहु-भाषा अनुक्रमणिका

मैंने इसके बारे में बहुत सोचा और मुझे लगता है कि सबसे अच्छा तरीका यह होगा कि प्रति मॉडल 1 इंडेक्स का उपयोग करें और उस कॉलबैक का लाभ उठाएं जिसे आप ::search() पर पास कर सकते हैं।

डेटा इंडेक्स करना

सबसे पहले आपको toSearchableArray() use का उपयोग करना होगा डेटा तैयार करने के लिए। मैं हर अनावश्यक विशेषताओं (जैसे तिथियां) को उसके आईएसओ के तहत घोंसला सामग्री को अनसेट कर दूंगा।

{
  objectID: 1,
  en: {
    title: "Title in english",
    body: "trucated body in english"
  },
  fr: {
    title: "Titre en français",
    body: "contenu tronqué en français"
  }
}

कृपया ध्यान दें कि अल्गोलिया में प्रति रिकॉर्ड 10KB की सीमा है। इसे संभालने का सबसे अच्छा तरीका है कि आप अपनी सबसे बड़ी विशेषताओं को छोटा कर दें। चिंता न करें, यह प्रासंगिकता को प्रभावित नहीं करता है . यदि आप अपने लेख के दूसरे भाग से चूक जाते हैं, तो आमतौर पर सभी प्रासंगिक सामग्री पहले भाग में होती है।

डैशबोर्ड में अल्गोलिया कॉन्फिगरेशन सेटअप करें

फिर अपने डैशबोर्ड पर जाएं और fr . जोड़ें और en searchableAttributes . के लिए ।

खोज

आप searchableAttributes . को प्रतिबंधित कर सकते हैं खोज के लिए पारित कॉलबैक के साथ क्वेरी समय पर

$lang = 'en';
Model::search($query, function ($algolia, $query, $options) use ($lang) {
    $options = array_merge($options, [
        'restrictSearchableAttributes' => [$lang],
    ]);

    return $algolia->search($query, $options);
});

मैंने कुछ ऐसा ही हासिल करने के लिए एक विशेषता बनाई . उपयोग में आसान सिंटैक्स के लिए शायद आप कुछ ऐसा ही कर सकते हैं जैसे:

Model::searchLang($lang, $query);

सभी सोच के बाद, मुझे सच में लगता है कि यह आपकी बाधाओं के साथ लारवेल स्काउट का उपयोग करने का सबसे कम हैकी तरीका है।

कृपया मुझे बताएं कि आप क्या सोचते हैं :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सुरक्षित तरीके से PHP एप्लिकेशन में MYSQL के लिए पासवर्ड संग्रहीत करना

  2. MySQL प्रतिकृति के लिए विफलता का परिचय - 101 ब्लॉग

  3. नेस्टेड सेट मॉडल पीएचपी पुस्तकालय

  4. विशाल तालिका से बड़ी मात्रा में डेटा हटाएं

  5. mysqldump का उपयोग किए बिना क्वेरी का उपयोग करके बैकअप डेटाबेस (डेटाबेस)