Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关系数据库的全文搜索?_C#_Sql Server_Azure_Full Text Search - Fatal编程技术网

C# 关系数据库的全文搜索?

C# 关系数据库的全文搜索?,c#,sql-server,azure,full-text-search,C#,Sql Server,Azure,Full Text Search,我很快就需要在我的一个项目中进行全文搜索,所以我开始研究一些搜索引擎。。例如Azure搜索,但是。。。从我到目前为止所看到的情况来看,没有一个引擎能够在多个表之间搜索具有这些表之间关系的表 比如说。。我不能简单地要求引擎搜索red这个词,然后它会对所有表或索引表进行爬网,然后返回命中结果,让我能够逐步浏览它的关系数据 比如说。。假设我们有一张叫做Cars的桌子。我们还有另外两张桌子,一张叫颜色,另一张叫品牌。。现在,Cars/FK与桌子颜色和桌子品牌有关系。。当我使用我的搜索引擎时,我希望能够搜

我很快就需要在我的一个项目中进行全文搜索,所以我开始研究一些搜索引擎。。例如Azure搜索,但是。。。从我到目前为止所看到的情况来看,没有一个引擎能够在多个表之间搜索具有这些表之间关系的表

比如说。。我不能简单地要求引擎搜索red这个词,然后它会对所有表或索引表进行爬网,然后返回命中结果,让我能够逐步浏览它的关系数据

比如说。。假设我们有一张叫做Cars的桌子。我们还有另外两张桌子,一张叫颜色,另一张叫品牌。。现在,Cars/FK与桌子颜色和桌子品牌有关系。。当我使用我的搜索引擎时,我希望能够搜索所有具有红色的有效关系设置的所有汽车,然后能够获得卡诺曲线,仅获取颜色的数据,但实际的汽车数据

据我所见,Azure search必须包括搜索引擎,它要求我将数据的关系结构扁平化为一条记录。。这似乎很奇怪,因为这将在相当多的数据中结束,并且将很难映射回具有关系的数据实体

所以。。。有没有关于如何通过关系数据库进行全文搜索的想法?在我的例子中,数据库将是SQL Server数据库

比尔,
Inx

为了正确地对多个表中的全文搜索进行评分,创建展平实体是最好的方法。我的意思是,可以在一个查询示例中搜索多个表:选择*FROM CONTAINSTABLECars,*,'sedan'join CONTAINSTABLEBrands,*,'honda'on。。。但是每次搜索的分数范围会有很大差异,因此计算一个可靠的统一分数是非常困难到不可能的。对于展平实体,这不是问题

展平实体不会也不应该替换现有表。它应该是数据库中的一个单独的表。为了保持同步,你可以1创建一个定期插入/更新它的作业,2你可以利用它进行更实时的操作

展平图元应包含允许您映射回其他图元的列。汽车的展平实体示例:

Cars_FullText
-------------
CarId   <-- these 3 columns from the Cars table
CarName*
CarDescription
ColorId   <-- these 2 columns from the Colors lookup table
ColorName*
BrandId   <-- these 2 columns from the Brands lookup table
BrandName* ...

* this column is full text indexed

是的,您的数据库将需要更多存储空间。是的,这会为系统添加另一个部件。但考虑到SQL Server全文索引的局限性以及我前面提到的多个表的分数问题,我认为这是最好的方法。

看看这个链接,它讨论了Azure SQL数据库中的全文搜索:。目前正在预览中。看看是否符合您的要求。好的,谢谢您的反馈:。假设我使用扁平化方法,那么如何实现这一最简单的方法呢?我想我的问题是。。如何创建json模式,然后生成要索引的数据行?这方面有没有一个框架。。或者这些都必须手动创建?是否可以进行某种连接来创建所有可能要索引的行?有什么建议吗?。。我假设可以使用反射来抓取数据模型并生成模式。。但是,如果有的话,应该使用经过测试的东西。我想我应该提到,上面的评论适用于Azure搜索服务。。