সব প্রশ্নের অভিধানে থাকতে হবে?
না। কারণ কেবল শব্দের কান্ড (ব্যবহৃত পাঠ্য অনুসন্ধানের কনফিগারেশন অনুসারে ) সূচকটিতে শুরু হয়। তবে আরও গুরুত্বপূর্ণ:
কোন । কারণ, যে উপরে সম্পূর্ণ টেক্সট খোঁজা হয় করতে সক্ষম উপসর্গ ম্যাচিং :
এটি কাজ করবে:
SELECT id, subject
FROM mailboxes
WHERE tsv @@ to_tsquery('simple', 'avail:*')
ORDER BY id DESC;
3 টি জিনিস নোট করুন :
এই ক্ষেত্রে ব্যবহার করুন to_tsquery()
না plainto_tsquery()
, কারণ ( ম্যানুয়ালটির উদ্ধৃতি ):
... এর plainto_tsquery
ইনপুটটিতে tsquery
অপারেটর, ওজন লেবেল বা উপসর্গের সাথে ম্যাচ লেবেলগুলি সনাক্ত করবে না
'simple'
উত্পন্ন করতে পাঠ্য অনুসন্ধানের কনফিগারেশনটি ব্যবহার করুন tsquery
আপনি স্পষ্টতই 'উপকার' শব্দটি গ্রহণ করতে চান এবং স্টেমিং প্রয়োগ করতে পারেন না।
:*
এটি একটি উপসর্গ অনুসন্ধান করতে যোগ করুন , অর্থাত্ 'উপভোগ' দিয়ে শুরু হওয়া সমস্ত লেক্সেমিকে সন্ধান করুন।
গুরুত্বপূর্ণ: এটি নথিতে লেেক্সিম (শব্দ স্টেমস) এর একটি উপসর্গ অনুসন্ধান search ওয়াইল্ডকার্ড ( content ~* 'avail'
) ছাড়াই নিয়মিত এক্সপ্রেশন ম্যাচ হুবহু এক নয়! পরবর্তীটি বাম-নোঙ্গর করা হয়নি (লেক্সেমিসের শুরুতে) এবং এটি 'ফুয়াওয়াইল' ইত্যাদিও খুঁজে পাবে
আপনি আপনার ক্যোয়ারিতে বর্ণিত রূপটি বা যুক্ত হওয়া নিয়মিত অভিব্যক্তির সমতুল্য চান তা পরিষ্কার নয়। ইতিমধ্যে প্রস্তাবিত @ ট্র্যাগ্রাম সূচকগুলি ( pg_trgm
) এর জন্য সঠিক সরঞ্জাম। ডিবিএএসই সম্পর্কিত অনেকগুলি প্রশ্ন রয়েছে, একটি অনুসন্ধান চেষ্টা করুন ।
সংক্ষিপ্ত বিবরণ:
ডেমো
SELECT *
FROM (
VALUES
('Zend has no framework')
, ('Zend Framework')
) sub(t), to_tsvector(t) AS tsv
WHERE tsv @@ to_tsquery('zend <-> fram:*');
id | t | tsv
----+----------------+------------------------
2 | Zend Framework | 'framework':2 'zend':1
সাম্প্রতিক সম্পর্কিত উত্তর (অধ্যায়টি অনুসন্ধানের অনুকূলকরণের জন্য বিভিন্ন পদ্ধতির ):
ইমেল?
যেহেতু আপনি ইমেলগুলি উল্লেখ করেছেন তাই সচেতন হন যে পাঠ্য অনুসন্ধানের পার্সার ইমেলগুলি সনাক্ত করে এবং সেগুলিকে পৃথক শব্দ / লেক্সেমিতে বিভক্ত করে না। বিবেচনা:
SELECT ts_debug('english', 'xangr@some.domain.com')
(email,"Email address",xangr@some.domain.com,{simple},simple,{xangr@some.domain.com})
আমি বিভাজকগুলিকে @
এবং .
আপনার ইমেলগুলিতে স্থান ( ' '
) দিয়ে ইনডেক্সযুক্ত শব্দগুলিতে প্রতিস্থাপন করব ।
এছাড়াও, যেহেতু আপনি ইমেলগুলিতে নামগুলি ইংরেজী (বা অন্য কোনও ভাষা) শব্দের সাথে নয় , তাই আমি 'simple'
স্টেমিং এবং অন্যান্য ভাষার বৈশিষ্ট্যগুলি অক্ষম করতে পাঠ্য অনুসন্ধানের কনফিগারেশনটি ব্যবহার করব :
এর ts_vector
সাথে কলামটি তৈরি করুন :
SELECT to_tsvector('simple', translate('joe.xangr@some.domain.com', '@.', ' ')) AS tsv;
:*
নথিভুক্ত রয়েছে, এবং 2)to_tsvector('simple'..)
সেই টিএসভির ভবিষ্যত জিজ্ঞাসা করার জন্য খুব সহজেই 'সিম্পল' কনফিগারেশনও প্রয়োজন হবে না এমন নির্দেশাবলীর সাথে হাতে তৈরির কথা উল্লেখ করা উচিত নয় ? আমি মনে করি আপনার একটি স্পেসেক্টর / tsquery উপর স্টেমিং নিষ্ক্রিয় করার ছদ্মবেশগুলি স্পষ্ট করা উচিত।