Java : MongoDB Full Text Search

MongoDB তে Search efficient করার জন্য key field এর উপর indexing করতে হয়, যদিও default ভাবে _id (ObjectId) এর উপর বেস করে Indexing করা থাকে । কিন্তু যদি আপনি টেক্সট সার্চ করতে চান তবে তার জন্য আলাদা ভাবে ইনডেক্স করতে হবে । এখানে সেইটা কিভাবে করে তা দেখব ।
আপনি একটা, কয়েকটা বা Wildcard indexing করতে পারেন, তবে টেক্সট ইনডেক্স কোণ ভাবেই একের বেশি হতে পারবে না কিন্তু একাধিক field এর উপর হতে পারে ।
ধরি ডাটাবেসে profiles নামে একটা কালেকশন আছে সেইটায় আমরা ইন্ডেক্সিং করব ।

db.collectionName.createIndex("fieldName", "text");

( first-name field ধরে ইনডেক্স করা হয়েছে )


(first-name,last-name (একাধিক) field এর উপড়ে বেস করে ইনডেক্স করা হয়েছে)

 (একটি ইনডেক্স করার পর আর একটি ইনডেক্স করার চেষ্টা করায় এররর দিয়েছে, কারণ টেক্সট ইনডেক্স একটির বেশি থাকতে পারবে না)

 db.collectionName.createIndex("$**", "text");

(Wildcard ইন্ডেক্সিং)

সার্চ Query :
db.collectionName.find({$text: {$search: "searchQuery"}})

db.collectionName.getIndexes();
db.collectionName.dropIndex("indexName");

Java :

BasicDBObject conditionObject = new BasicDBObject("$text", new BasicDBObject("$search", "searchQuery"));
collectionObject.find(conditionObject);

Share this

Related Posts

Previous
Next Post »