这是我现在有一个非常基本的搜索:LINQ关键字搜索与排序依据基于计数(LINQ到SQL)相关
var Results = from p in dx.Listings select p;
if (CategoryId > 0) Results = Results.Where(p => p.CategoryId == CategoryId);
if (SuburbId > 0) Results = Results.Where(p => p.SuburbId == SuburbId);
var OrderedResults = Results.OrderByDescending(p => p.ListingType);
OrderedResults = OrderedResults.ThenByDescending(p => p.Created);
我知道我可以在。载有(添加)或类似并从关键字框中输入关键字(拆分为单个项目),并获得结果列表。
但是我需要通过基本相关性来排序结果。这意味着如果记录A包含2个关键字(在'Body'nvarchar(MAX)字段中),它应该高于仅匹配1个关键字的记录B.我不需要对每一次击球进行全面统计......但是,如果这是一个eaiser来管理的话就没问题。
那么有没有什么办法直接在命令中直接得到命中数呢?我可以通过获取结果和解析来管理它,但是我真的不想这么做,因为解析可能有数千个人可能突破IIS机器,而SQL Server是一个体面强大的集群:)
如果任何人有任何想法或提示这将是一个很大的帮助。
如果我创建一个自定义功能在里面添加,然后它会在Web服务器上本地解析每条记录而不是一个SQL查询是否正确? – 2009-08-24 14:37:34
没错。你正试图通过LINQ OrderBy方法来实现这一点,我现在了解你吗? – 2009-08-24 14:40:06
是啊:)我到目前为止所能想到的可能是一组动态子查询每个关键字来获得计数orderby ...这似乎凌乱嘿 – 2009-08-24 14:42:37