উত্তর:
term
কোয়েরিটি একক শর্তের সাথে মিলে যায়: মানটি বিশ্লেষণ করা হয় না । সুতরাং, আপনি কী সূচী করেছেন তার উপর নির্ভর করে এটি হ্রাস করতে হবে না।
আপনি যদি Bennett
সূচকের সময় সরবরাহ করে থাকেন এবং মানটি বিশ্লেষণ না করা হয়, তবে নিম্নলিখিত কোয়েরিটি কোনও কিছুই ফিরিয়ে দেবে না:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
কোয়েরি ক্ষেত্রের জন্য বিশ্লেষকদের সংজ্ঞায়িত করা থাকলে এবং নিম্নলিখিত মাপদণ্ডের সাথে মিলে থাকা নথিগুলি পাওয়া গেলে ইনপুটটি বিশ্লেষণ করবে:
উদাহরণস্বরূপ, যদি আপনি নিম্নলিখিত দস্তাবেজগুলি সূচী করেন ( standard
ক্ষেত্রের জন্য বিশ্লেষক ব্যবহার করে foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
এই match_phrase
ক্যোয়ারীটি কেবল প্রথম এবং দ্বিতীয় নথিগুলি ফিরিয়ে দেবে:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
ডিফল্টরূপে _ সমস্ত ক্ষেত্রে ক্যোয়ারী অনুসন্ধানে একসাথে বেশ কয়েকটি পাঠ্য ক্ষেত্রের পাঠ্য রয়েছে। তার উপরে, এটি বিশ্লেষণ করে কিছু অপারেটর (ওআর / ওআর ...), ওয়াইল্ডকার্ডস এবং আরও সমর্থন করে ( সম্পর্কিত বাক্য গঠন দেখুন )।
অনুসন্ধান হিসাবে match_phrase
, অনুসন্ধান ক্ষেত্রের সেট বিশ্লেষক অনুযায়ী ইনপুটটি বিশ্লেষণ করা হয়।
এর বিপরীতে match_phrase
, বিশ্লেষণের পরে প্রাপ্ত পদগুলি একই ক্রমে থাকা উচিত নয়, যদি না ব্যবহারকারী ইনপুটটির চারপাশে উদ্ধৃতি ব্যবহার করে।
উদাহরণস্বরূপ, আগের মতো একই দস্তাবেজগুলি ব্যবহার করে, এই কোয়েরিটি সমস্ত দস্তাবেজকে ফিরিয়ে দেবে:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
তবে এই ক্যোয়ারী ক্যোয়ারির মতো একই 2 টি নথি ফেরত দেবে match_phrase
:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
এই প্রশ্নের জন্য বিভিন্ন বিকল্প সম্পর্কে আরও অনেক কিছু বলার আছে, দয়া করে সম্পর্কিত ডকুমেন্টেশন একবার দেখুন:
আশা করি এটি যথেষ্ট পরিষ্কার এবং এটি সাহায্য করবে।
match
ক্ষেত্র বিশ্লেষণ করা থাকলে বাটম্যাচি একটি ক্যোয়ারী বিশ্লেষক ব্যবহার করুন, তাই হ্যাঁ। ডিফল্টরূপে, এটি নূন্যতম শর্তাদি (প্যারামিটার দেখুন operator
) এর সাথে থাকা দস্তাবেজগুলি ফিরিয়ে দেবে এবং আদেশটি গুরুত্বপূর্ণ নয়।
আমি মনে করি যে কেউ অবশ্যই স্পষ্টভাবে পার্টিয়াল সন্ধানের ক্ষেত্রে তাদের মধ্যে পার্থক্যগুলি সন্ধান করছে এখানে ডিফল্ট 'স্ট্যান্ডার্ড বিশ্লেষক' নিয়ে আমার বিশ্লেষণটি এখানে রয়েছে : -
মনে করুন, আমাদের কাছে ডেটা রয়েছে: -
name "নাম": "হ্যালো"}
এখন যদি আমরা এল দিয়ে আংশিক অনুসন্ধান করতে চাই ???
টার্ম ক্যোয়ারী বা ম্যাচ ক্যোয়ারী
{"term":{"name": "*ell*" }
কাজ করবে না, খেয়াল করে ফিরে আসবে।
{"term":{"name": "*zz* *ell*" }
কাজ করবে না, খেয়াল করে ফিরে আসবে।
উপসংহার - টার্ম বা মিল মোটেও আংশিক অনুসন্ধান করতে সক্ষম নয়
ওয়াইল্ডকার্ড ক্যোয়ারী: -
{"wildcard":{"name": "*ell*" }
ফলাফল দেবে {"নাম": "হ্যালো"}
{"wildcard":{"name": "*zz* *ell*" }
কাজ করবে না, খেয়াল করে ফিরে আসবে।
উপসংহার - ওয়াইল্ডকার্ড কেবল একটি টোকেন দিয়ে আংশিক অনুসন্ধান করতে সক্ষম
ক্যোয়ারী_স্ট্রিং: -
{"query_string": {"default_field": "name","query": "*ell*"}
ফলাফল দেবে {"নাম": "হ্যালো"}
{"query_string": {"default_field": "name","query": "*zz* *ell*" }
ফলাফল দেবে {"নাম": "হ্যালো"} result
উপসংহার - ক্যোয়ারী_স্ট্রিং দুটি টোকেন দিয়ে অনুসন্ধান করতে সক্ষম হয়েছে
-> এখানে টোকেন ইল এবং জেড z
wildcard is able to do partial search with one token only
: আরও সুনির্দিষ্টভাবে, wildcard
ডিফল্ট অনুসারে অনুসন্ধানগুলি কেবলমাত্র keyword
ক্ষেত্রগুলিতে কাজ করে , যা সংজ্ঞায়িত একক-টোকেন। ক্ষেত্রের বিষয়বস্তুগুলির একাধিক শব্দের সাথে এটির কোনও সম্পর্ক নেই। আপনার ওয়াইল্ডকার্ড ক্যোয়ারিতে "ওজি হ্যালো" মিলবে।