আমি বর্তমানে একটি বিশাল এসকিউএল কোয়েরি না করে অন্যান্য অনুসন্ধানের পদ্ধতিগুলি দেখছি। আমি ইলাস্টিকসার্চটি সম্প্রতি দেখেছি এবং হুশ (একটি অনুসন্ধান ইঞ্জিনের একটি পাইথন বাস্তবায়ন) দিয়ে খেলি ।
আপনি কি আপনার পছন্দ (গুলি) জন্য কারণ দিতে পারেন?
আমি বর্তমানে একটি বিশাল এসকিউএল কোয়েরি না করে অন্যান্য অনুসন্ধানের পদ্ধতিগুলি দেখছি। আমি ইলাস্টিকসার্চটি সম্প্রতি দেখেছি এবং হুশ (একটি অনুসন্ধান ইঞ্জিনের একটি পাইথন বাস্তবায়ন) দিয়ে খেলি ।
আপনি কি আপনার পছন্দ (গুলি) জন্য কারণ দিতে পারেন?
উত্তর:
ইলাস্টিক অনুসন্ধানের স্রষ্টা হিসাবে, আমি কেন এগিয়ে গিয়েছিলাম এবং এটি প্রথম স্থানে তৈরি করেছি সে সম্পর্কে আমি আপনাকে কিছু যুক্তি দিতে পারি :)।
খাঁটি লুসিন ব্যবহার করা চ্যালেঞ্জিং। আপনি যদি এটি সত্যিই ভাল সঞ্চালন করতে চান তবে আপনার অনেক যত্ন নিতে হবে এবং এটির একটি গ্রন্থাগার, তাই কোনও বিতরণ সমর্থন নেই, এটি কেবল একটি এম্বেডেড জাভা লাইব্রেরি যা আপনাকে বজায় রাখতে হবে।
লুসিনের ব্যবহারযোগ্যতার ক্ষেত্রে, যখন ফিরে (প্রায় 6 বছর) তখন আমি কম্পাস তৈরি করেছি। এর উদ্দেশ্য ছিল লুসিন ব্যবহার করে সহজ করা এবং প্রতিদিনের লুসিনকে আরও সহজ করে তোলা। আমি বারবার যা এসেছি তা হ'ল কম্পাস বিতরণ করতে সক্ষম হওয়া প্রয়োজন। গিগা স্পেসস, কোহরেন্স এবং টেরাকোটার মতো ডেটা গ্রিড সমাধানগুলির সাথে একীভূত করে আমি এটিকে কমপাসের মধ্যে থেকেই কাজ শুরু করেছি, তবে এটি যথেষ্ট নয়।
এর মূল অংশে, একটি বিতরণ করা লুসিন দ্রবণটি তীক্ষ্ণ করা দরকার। এছাড়াও, এইচটিটিপি এবং জেএসনকে সর্বব্যাপী এপিআই হিসাবে উন্নীত করার সাথে সাথে এর অর্থ হল এমন একটি সমাধান যা বিভিন্ন ভাষার সাথে বিভিন্ন বিভিন্ন সিস্টেম সহজেই ব্যবহার করা যায়।
এ কারণেই আমি এগিয়ে গিয়ে ইলাস্টিক অনুসন্ধান তৈরি করেছি। এটির একটি অত্যন্ত উন্নত বিতরণকারী মডেল রয়েছে, জেএসএন স্থানীয়ভাবে কথা বলে এবং অনেকগুলি উন্নত অনুসন্ধান বৈশিষ্ট্য প্রকাশ করে, যা জাসন ডিএসএল-এর মাধ্যমে নির্বিঘ্নে প্রকাশ করা হয়েছিল।
সোলার এইচটিটিপি-র মাধ্যমে একটি ইনডেক্সিং / অনুসন্ধান সার্ভার উন্মোচিত করার একটি সমাধানও, তবে আমি যুক্তি দিয়ে বলব যে ইলাস্টিক অনুসন্ধান অনেক উন্নত বিতরণকারী মডেল এবং ব্যবহারের সহজতা সরবরাহ করে (যদিও বর্তমানে অনুসন্ধানের কয়েকটি বৈশিষ্ট্যের অভাব রয়েছে, তবে দীর্ঘ সময়ের জন্য নয়, এবং কোনওটিতে) কেস, পরিকল্পনাটি হ'ল ইলাস্টিক অনুসন্ধানে সমস্ত কম্পাস বৈশিষ্ট্য অন্তর্ভুক্ত করা হবে)। অবশ্যই আমি পক্ষপাতদুষ্ট, যেহেতু আমি ইলাস্টিক অনুসন্ধান তৈরি করেছি, সুতরাং আপনার নিজের জন্য যাচাই করতে হতে পারে।
স্পিঙ্কস হিসাবে, আমি এটি ব্যবহার করি নি, তাই আমি মন্তব্য করতে পারি না। আমি আপনাকে যা উল্লেখ করতে পারি তা হ'ল স্পিনেক্স ফোরামের এই থ্রেডে যা আমি মনে করি ইলাস্টিক অনুসন্ধানের উন্নত বিতরণকারী মডেলটিকে প্রমাণ করে।
অবশ্যই, ইলাস্টিক অনুসন্ধানে কেবল বিতরণ করা ছাড়াও আরও অনেকগুলি বৈশিষ্ট্য রয়েছে। এটি আসলে মেঘের কথা মাথায় রেখেই নির্মিত হয়েছে। আপনি সাইটে বৈশিষ্ট্য তালিকা চেক করতে পারেন।
আমি স্পিনিক্স, সোলার এবং ইলাস্টিকসার্ক ব্যবহার করেছি। সোলার / ইলাস্টিকসার্ক লুসিনের উপরে নির্মিত। এটি অনেকগুলি সাধারণ কার্যকারিতা যুক্ত করে: ওয়েব সার্ভার এপিআই, ফেসিং, ক্যাশিং ইত্যাদি
আপনি যদি কেবল একটি সাধারণ পূর্ণ পাঠ্য অনুসন্ধান সেটআপ রাখতে চান তবে স্ফিংক্স আরও ভাল পছন্দ।
আপনি যদি নিজের অনুসন্ধানটি একেবারে কাস্টমাইজ করতে চান তবে ইলাস্টিকসার্চ এবং সোলারই সেরা পছন্দ। এগুলি খুব বর্ধনযোগ্য: ফলাফল স্কোরিং সামঞ্জস্য করতে আপনি নিজের প্লাগইন লিখতে পারেন।
কিছু উদাহরণ ব্যবহার:
আমরা লক্ষ লক্ষ ডকুমেন্টকে ইনডেক্স এবং অনুসন্ধানে নিয়মিত লুসিন ব্যবহার করি। অনুসন্ধানগুলি যথেষ্ট দ্রুত এবং আমরা বর্ধিত আপডেটগুলি ব্যবহার করি যা খুব বেশি সময় নেয় না। আমাদের এখানে আসতে কিছুটা সময় নিয়েছিল। লুসিনের শক্তিশালী পয়েন্টগুলি হ'ল তার মাপের ক্ষমতা, বিশাল বৈশিষ্ট্য এবং বিকাশকারীদের একটি সক্রিয় সম্প্রদায়। খালি Lucene ব্যবহার করার জন্য জাভাতে প্রোগ্রামিং প্রয়োজন।
আপনি যদি নতুনভাবে শুরু করে থাকেন তবে লুসিন পরিবারে আপনার জন্য হাতিয়ারটি সোলার , যা খালি লুসিনের চেয়ে সেটআপ করা অনেক সহজ এবং লুসিনের প্রায় সমস্ত শক্তি রয়েছে। এটি সহজেই ডাটাবেস নথি আমদানি করতে পারে। সোলার জাভাতে লেখা হয়, সুতরাং সোলারের যেকোন পরিবর্তনের জন্য জাভা জ্ঞান প্রয়োজন, তবে আপনি কনফিগারেশন ফাইলগুলি টুইট করে অনেক কিছু করতে পারেন।
আমি স্পিনেক্স সম্পর্কে ভাল জিনিস শুনেছি, বিশেষত একটি মাইএসকিউএল ডাটাবেসের সাথে একযোগে। যদিও এটি ব্যবহার করেন নি।
আইএমও, আপনার অনুসারে নির্বাচন করা উচিত:
আমরা মাইএসকিএল রেকর্ডের ১০,০০০.০০+ এবং 10+ বিভিন্ন ডাটাবেস সহ একটি উল্লম্ব অনুসন্ধান প্রকল্পে স্পিনিক্স ব্যবহার করি। এটি মাইএসকিউএল এবং ইনডেক্সিংয়ে উচ্চ কার্যকারিতার জন্য খুব দুর্দান্ত সমর্থন পেয়েছে, গবেষণাটি দ্রুত তবে লুসিনের চেয়ে কিছুটা কম। তবে আপনার যদি প্রতিদিন প্রতিদিন সূচকের প্রয়োজন হয় এবং কোনও মাইএসকিউএল ডিবি ব্যবহার করা হয় তবে এটি সঠিক পছন্দ।
ইলাস্টিক অনুসন্ধান এবং সোলারের তুলনা করার জন্য একটি পরীক্ষা
আমার স্পিংক্স.কনফ
source post_source
{
type = mysql
sql_host = localhost
sql_user = ***
sql_pass = ***
sql_db = ***
sql_port = 3306
sql_query_pre = SET NAMES utf8
# query before fetching rows to index
sql_query = SELECT *, id AS pid, CRC32(safetag) as safetag_crc32 FROM hb_posts
sql_attr_uint = pid
# pid (as 'sql_attr_uint') is necessary for sphinx
# this field must be unique
# that is why I like sphinx
# you can store custom string fields into indexes (memory) as well
sql_field_string = title
sql_field_string = slug
sql_field_string = content
sql_field_string = tags
sql_attr_uint = category
# integer fields must be defined as sql_attr_uint
sql_attr_timestamp = date
# timestamp fields must be defined as sql_attr_timestamp
sql_query_info_pre = SET NAMES utf8
# if you need unicode support for sql_field_string, you need to patch the source
# this param. is not supported natively
sql_query_info = SELECT * FROM my_posts WHERE id = $id
}
index posts
{
source = post_source
# source above
path = /var/data/posts
# index location
charset_type = utf-8
}
পরীক্ষার স্ক্রিপ্ট:
<?php
require "sphinxapi.php";
$safetag = $_GET["my_post_slug"];
// $safetag = preg_replace("/[^a-z0-9\-_]/i", "", $safetag);
$conf = getMyConf();
$cl = New SphinxClient();
$cl->SetServer($conf["server"], $conf["port"]);
$cl->SetConnectTimeout($conf["timeout"]);
$cl->setMaxQueryTime($conf["max"]);
# set search params
$cl->SetMatchMode(SPH_MATCH_FULLSCAN);
$cl->SetArrayResult(TRUE);
$cl->setLimits(0, 1, 1);
# looking for the post (not searching a keyword)
$cl->SetFilter("safetag_crc32", array(crc32($safetag)));
# fetch results
$post = $cl->Query(null, "post_1");
echo "<pre>";
var_dump($post);
echo "</pre>";
exit("done");
?>
নমুনা ফলাফল:
[array] =>
"id" => 123,
"title" => "My post title.",
"content" => "My <p>post</p> content.",
...
[ and other fields ]
স্ফিংস ক্যোয়ারির সময়:
0.001 sec.
স্ফিংস ক্যোয়ারির সময় (1 ক সমকালীন):
=> 0.346 sec. (average)
=> 0.340 sec. (average of last 10 query)
মাইএসকিউএল ক্যোয়ারির সময়:
"SELECT * FROM hb_posts WHERE id = 123;"
=> 0.001 sec.
মাইএসকিউএল ক্যোয়ারির সময় (1 ক সমকালীন):
"SELECT * FROM my_posts WHERE id = 123;"
=> 1.612 sec. (average)
=> 1.920 sec. (average of last 10 query)
একমাত্র স্থিতিস্থাপক বনাম সোলার পারফরম্যান্স তুলনা যা আমি এখনও অবধি খুঁজে পেতে পেরেছি তা এখানে:
লুসিন দুর্দান্ত এবং সমস্ত, তবে তাদের স্টপ ওয়ার্ড সেটটি ভয়াবহ। এটিকে ব্যবহারযোগ্যতার কাছাকাছি পাওয়ার জন্য আমাকে নিজেই স্টপএনালিজারে এক টন স্টপ শব্দ যুক্ত করতে হয়েছিল EN এএনজিএলআইএসপিপি_ডাব্লর্ডস_এসটি।
আমি স্ফিংস ব্যবহার করি নি তবে আমি জানি লোকেরা এর গতি এবং কাছাকাছি-যাদুকরী "সেটআপের সহজতার পক্ষে সহজতা" অনুপাতের শপথ করে।
অনির্দিষ্টকেন্দ্র চেষ্টা করুন।
ইলাস্টিক অনুসন্ধানের ক্ষেত্রে এটি লুসিন / সোলারের চেয়ে বেশি সহজে ব্যবহার করা যায় বলে ধারণা করা হয়েছিল। এটিতে খুব নমনীয় স্কোরিং সিস্টেম অন্তর্ভুক্ত রয়েছে যা পুনর্নির্দেশনা ছাড়াই টুইট করা যায়।