当前位置:  开发笔记 > 数据库 > 正文

Linq的全文搜索

如何解决《Linq的全文搜索》经验,为你挑选了1个好方法。

在Linq中没有内置全文搜索,并且似乎没有很多关于这个主题的帖子所以我有一个游戏并为我的utleity类提出了这个方法:

public static IEnumerable GenericFullTextSearch(string text, MyDataContext context)
{
    //Find LINQ Table attribute
    object[] info = typeof(TSource).GetCustomAttributes(typeof(System.Data.Linq.Mapping.TableAttribute), true);
    //Get table name
    String table = (info[0] as System.Data.Linq.Mapping.TableAttribute).Name;
    //Full text search on that table
    return context.ExecuteQuery(String.Concat("SELECT * FROM ", table, " WHERE CONTAINS(*, {0})"), text);
}

并将此包装器添加到每个部分Linq类,其中有一个全文索引

public static IEnumerable FullTextSearch(string text, MyDataContext context)
{
    return (LinqUtilities.GenericFullTextSearch(text, context) as IEnumerable);
}

所以现在我可以用简洁的东西做全文搜索

var Pets = Pet.FullTextSearch(helloimatextbox.Text, MyDataContext).Skip(10).Take(10);

我假设目前只需要进行非常基本的搜索.任何人都可以改进吗?是否可以实现作为扩展方法并避免包装?



1> 小智..:

最好的解决方案是在sql中使用内联表值函数并将其添加到模型中

http://sqlblogcasts.com/blogs/simons/archive/2008/12/18/LINQ-to-SQL---Enabling-Fulltext-searching.aspx

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有