【发布时间】:2017-05-19 10:47:26
【问题描述】:
我正试图弄清楚如何解决这个问题,但无法解决这个问题 - 或者找到解决问题的最佳方法。我想要实现的是以下(Kw代表关键字)。
所有文章中 db 中的现有 kw: Kw1, Kw2, Kw3, Kw4, Kw5
使用关键字的文章
Art1:Kw1、Kw2、Kw3
Art2:Kw1、Kw2、Kw4
Art3:Kw4、Kw1、Kw5
Art4:Kw5、Kw4、Kw2
要匹配的关键字(由用户提交)
Kw1、Kw2、Kw3
基于关键字匹配次数最多的排名
艺术 1
艺术 2
第 3 条和第 4 条
技术规格
我正在尝试使用带有实体框架的 ASP.NET MVC 项目来实现这一点。该项目连接到一个 MS SQL 数据库,其中包含一个包含文章的表,以及另一个包含与每篇文章相关的关键字的表。
我最初的想法是以某种方式使用 LINQ,但我发现很难弄清楚如何做到这一点,如果可能的话。
非常感谢所有帮助我找到正确解决方法的方法!
编辑:数据结构
**KeywordTbl**
[KnowledgeDatabaseKeywordId] INT IDENTITY (1, 1) NOT NULL,
[Keyword] NVARCHAR (64) NOT NULL,
[KnowledgeDatabaseId] INT NOT NULL,
**ArticlesTbl**
[KnowledgeDatabaseId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (200) NOT NULL,
[Summary] NVARCHAR (1000) NOT NULL,
[Article] NVARCHAR (MAX) NOT NULL,
示例
**ArticlesTbl**
KnowledgeDatabaseId = 1
Title = "My title"
Summary = "A short summary"
Article = "Longer text"
**KeywordTbl**
KnowledgeDatabaseKeywordId = 1
Keyword = "Kw1"
KnowledgeDatabaseId = 1
KnowledgeDatabaseKeywordId = 2
Keyword = "Kw2"
KnowledgeDatabaseId = 1
【问题讨论】:
-
您应该查看全文索引。
-
可能不是最好的解决方案,但使用 linq 您可以对每个关键字运行并行查询,然后合并结果并对其进行排序。
-
我认为当你说文章包含关键字时,这些是构成文章正文的关键字,还是单独存储的用于对文章进行分类的关键字?
-
iamdave - 关键字是单独存储的,它们可以被视为例如博客标签/对文章进行分类。
-
保存这些关键字的数据结构是什么?这对于获得与您的情况实际相关的帮助非常重要。请添加您的数据结构和一些测试数据。此外,如果您想引用用户名以便通知我们您已标记我们,请在名称前使用
@符号,如下所示:@Subtractive
标签: c# sql-server asp.net-mvc entity-framework linq