我會建議你在一個SQL數據庫做這項工作。您可能不想將文檔存儲在那裏,但主題是適當的。
你想只爲一個主題表:
create table Topics (
TopicId int identity(1,1), -- SQL Server for auto increment column
TopicName varchar(255),
CreatedBy varchar(255) default system_user,
CreatedAt datetime default getdate()
)
你想分配給文件的主題另一個表,假設你有某種形式的文件ID來識別文件:
create table DocumentTopics (
DocumentTopicId int identity(1,1), -- SQL Server for auto increment column
TopicId int,
DocumentID int,
CreatedBy varchar(255) default system_user,
CreatedAt datetime default getdate()
)
而另一表DOCUME NT觀點:
create table DocumentView (
DocumentViewId int identity(1,1), -- SQL Server for auto increment column
DocumentId int,
ViewedAt datetime,
viewedBy int, -- some sort of user id
CreatedBy varchar(255) default system_user,
CreatedAt datetime default getdate()
)
現在你可以使用查詢,如獲得通過普及給定日期範圍內的主題:
select t.TopicId, t.TopicName, count(*) as cnt
from DocumentUsage du join
DocumentTopics dt
on du.DocumentId = dt.DocumentId join
Topics t
on dt.TopicsId = t.TopicsId
where du.ViewedAt between <date1> and <date2>
group by t.TopicId, t.TopicName
order by 3 desc
您還可以獲取有關用戶的信息,變化隨着時間的推移,和其他信息。你可以有一個用戶表,它可以爲主題提供權重(更可靠的用戶,更不可靠的用戶)。系統的這個方面應該在SQL中完成。
是否將主題添加到文檔一次?或者,可以將新的主題隨時間添加到舊文檔中嗎? –
@GordonLinoff他們被添加一次。 – user1491915
你的問題的答案是,你應該將這個存儲在一個sql數據庫中,包含Topics,DocumentUsage和DocumentTopics的表格。我只寫了完整的答案,但由於某些技術問題,堆棧溢出丟失了。我現在沒有時間重新輸入。 –