テーブル内の選択された行から、発生頻度に基づいてフレーズを抽出してランク付けするにはどうすればよいですか?
例1:http ://developer.yahoo.com/search/content/V1/termExtraction.html
例2: http: //mirror.me/i/love
INPUT:
CREATE TABLE phrases (
id BIGSERIAL,
phrase VARCHAR(10000)
);
INSERT INTO phrases (phrase) VALUES (‘Italian sculptors and painters of the renaissance favored the Virgin Mary for inspiration.’)
INSERT INTO phrases (phrase) VALUES (‘Andrea Bolgi was an italian sculptor’)
DESIRED OUTPUT:
phrase | weight
italian sculptor | 5
virgin mary | 2
painters | 1
renaissance | 1
inspiration | 1
Andrea Bolgi | 1
フレーズではなく単語だけを見つけるには、
SELECT * FROM ts_stat('SELECT to_tsvector(''simple'', phrase) FROM phrases')
ORDER BY nentry DESC, ndoc DESC, word;
いくつかのメモ:
- フレーズには「ストップワード」を含めることができます(例:「答えやすい」</ li>
- 理想的には、英語のバリエーションと同義語は自動的にグループ化されます。
pg_trgmは役に立ちますか?(2語と3語のフレーズしか見つからなくても大丈夫です)。どのくらい正確に?
関連する質問: