Sql Server Freetext通过Entity Framework

Sht*_*ong 10 .net sql-server full-text-search entity-framework entity-framework-4

我有一个使用ASP.NET MVC 3和Entity Framework 4查询Sql Server 2008数据库的现有网站.它包含一个包含大约10个字段的搜索表单,当用户单击提交按钮时,我动态创建一个仅包含指定搜索字段的Entity SQL请求,省略空字段.有用.到现在为止还挺好.

现在,客户端需要其中一个字段的全文搜索行为.我认为这个请求非常复杂,因为(AFAIK):

  • 实体框架本身不支持全文搜索
  • 我想避免存储过程来包装FTS语法,因为到目前为止我只使用"静态"SP,将逻辑保留在.NET代码中.所以我想尽量避免在过程中构建查询.并且每个可能的搜索字段组合创建一个过程不是一种选择.

到目前为止我能想到的解决方案:

  • 将存储过程或用户定义的函数作为seach preadicate放在WHERE子句中(虽然我不确定是否可行)
  • 仅在临时表中获取FTS结果,并​​在该临时表上执行其他过滤器.如果这项技术有很多FTS结果,我担心表现不佳......

用这种方法感觉最好的方法是什么?

Lee*_*unn 6

你能不能只使用原始的SQL?那么你可以保持.NET代码中的逻辑.

所以,它看起来像:

string sql = "DO FULLTEXT STUFF";
MyObjectContext.ExecuteStoreQuery<MyEntity>(sql, .......);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的建议.我尝试通过保持实体查询构建来增强它,然后生成结果SQL查询并在执行之前用一个FREETEXT替换LIKE precidate. (2认同)