आप pg_search
normalization, या मूल रूप से ranking search results Postgres में उपयोग करने के लिए की जरूरत है। मैं भी निम्न उदाहरण में सामान्य कारक का उपयोग नहीं किया:
SELECT ts_rank_cd(vector,query) as rank
FROM
to_tsvector('simple','George Harrison drives a Ford Focus') as vector,
to_tsquery('simple','Harrison & Ford') as query;
आउटपुट 1: -:
SELECT ts_rank_cd(vector,query) as rank
FROM
to_tsvector('simple','Harrison Ford drives a car') as vector,
to_tsquery('simple','Harrison & Ford') as query;
आउटपुट
rank
-----------
0.0333333
(1 row)
आप Harrison
और Ford
एक साथ है, तो रैंक अधिक होगी 2:
rank
------
0.1
(1 row)
यदि आप ORDER BY rank DESC
सभी खोज परिणामों को प्राप्त करते हैं, तो आपको वह चाहिए जो आपको चाहिए, क्योंकि एक दूसरे के बगल में मौजूद सभी खोज शब्द उच्चतम rank
होंगे और आपकी खोज परिणाम सूची के शीर्ष पर होंगे।
स्रोत
2016-01-07 10:45:42
क्षमा करें, मुझे सामान्यीकरण एल्गोरिदम विकल्पों को समझ में नहीं आता है। सटीक मिलान के अलावा किसी और चीज को नजरअंदाज करने के लिए मैं किस सीमा को निर्धारित करता हूं? – Ashbury
यहां बिंदु यह है कि यदि आप रैंक डीईएससी द्वारा ऑर्डर करते हैं तो आप उच्चतम रैंक वाले शब्दों में उच्चतम रैंक होंगे - आपको जो चाहिए वह शीर्ष पर पहुंच जाएगा; मेरे उदाहरण में मैंने सामान्यीकरण कारक @ एशबरी –
का भी उपयोग नहीं किया था समस्या यह है कि यह अभी भी मूल मैचों के करीब कितने करीब है, यह निकटतम मैचों की श्रृंखला (और कोई सटीक मिलान) वापस नहीं कर सकता है। यहां तक कि अगर मैंने शीर्ष परिणाम लिया तो भी इसकी सटीक मिलान की कोई गारंटी नहीं है। – Ashbury