আমি সম্প্রতি ইলাস্টিক অনুসন্ধান ব্যবহার করা শুরু করেছি এবং আমি এটি কোনও শব্দের একটি অংশ অনুসন্ধান করে বলে মনে করতে পারি না।
উদাহরণ: আমার কোচডিডিবি থেকে ইলাস্টিক অনুসন্ধানে সূচিযুক্ত তিনটি নথি রয়েছে:
{
"_id" : "1",
"name" : "John Doeman",
"function" : "Janitor"
}
{
"_id" : "2",
"name" : "Jane Doewoman",
"function" : "Teacher"
}
{
"_id" : "3",
"name" : "Jimmy Jackal",
"function" : "Student"
}
সুতরাং এখন, আমি "ডো" সম্বলিত সমস্ত নথি অনুসন্ধান করতে চাই
curl http://localhost:9200/my_idx/my_type/_search?q=Doe
এটি কোনও হিট দেয় না তবে যদি আমি অনুসন্ধান করি
curl http://localhost:9200/my_idx/my_type/_search?q=Doeman
এটি একটি নথি ফেরত দেয় (জন ডোম্যান)।
আমি আমার সূচকের বৈশিষ্ট্য হিসাবে বিভিন্ন বিশ্লেষক এবং বিভিন্ন ফিল্টার সেট করার চেষ্টা করেছি। আমি একটি পূর্ণ অঙ্কিত ক্যোয়ারী ব্যবহার করার চেষ্টা করেছি (উদাহরণস্বরূপ:
{
"query": {
"term": {
"name": "Doe"
}
}
}
) তবে কিছুই কাজ করছে বলে মনে হচ্ছে না।
আমি "ডো" অনুসন্ধান করার সময় আমি কীভাবে জন দোম্যান এবং জেন ডোইউম্যান উভয়কে ইলাস্টিক অনুসন্ধান করতে পারি?
হালনাগাদ
আমি এনগ্রাম টোকেনাইজার এবং ফিল্টার ব্যবহার করার চেষ্টা করেছি, যেমন ইগোর প্রস্তাবিত, এর মতো:
{
"index": {
"index": "my_idx",
"type": "my_type",
"bulk_size": "100",
"bulk_timeout": "10ms",
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "my_ngram_tokenizer",
"filter": [
"my_ngram_filter"
]
}
},
"filter": {
"my_ngram_filter": {
"type": "nGram",
"min_gram": 1,
"max_gram": 1
}
},
"tokenizer": {
"my_ngram_tokenizer": {
"type": "nGram",
"min_gram": 1,
"max_gram": 1
}
}
}
}
}
আমার এখন যে সমস্যা হচ্ছে তা হ'ল প্রতিটি ক্যোয়ারী সমস্ত নথি ফেরত দেয়। কোন পয়েন্টার? এনজিগ্রাম ব্যবহারের ক্ষেত্রে ইলাস্টিক অনুসন্ধান ডকুমেন্টেশন দুর্দান্ত নয় ...