gpt4 book ai didi

c# - 基于计数的 orderby 相关性的 LINQ 关键字搜索 (LINQ to SQL)

转载 作者:行者123 更新时间:2023-11-30 12:37:20 25 4
gpt4 key购买 nike

这是我现在拥有的非常基本的搜索:

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);

我知道我可以添加 .Contains() 或类似内容并从关键字框中输入关键字(拆分为单个项目),这样应该会得到结果列表。

但是我需要按基本相关性对结果进行排序。这意味着如果记录 A 包含 2 个关键字(在“正文”nvarchar(MAX) 字段中),它应该高于仅与 1 个关键字匹配的记录 B。我不需要每次点击的完整计数...但是,如果这更易于管理,那就没问题了。

那么有什么方法可以很好地直接将命中数作为 orderby 的一部分?我可以通过获取结果和解析来管理它,但是我真的不想那样做,因为解析可能有数千个可能会影响 IIS 机器,而 SQL Server 是一个相当强大的集群:)

如果有人有任何想法或提示,那将是一个很大的帮助。

最佳答案

如果我对你的理解是正确的,你想调用 OrderyByDescending( p => p.Body ) 但它应该按某个单词在 p.Body 中出现多少次来排序?

然后您应该能够创建一个方法来计算出现次数并返回计数,然后您可以简单地执行 OrderyByDescending( p => CountOccurences(p.Body) )

您也可以创建一个实现 IComparerBodyComparer 类,然后将其传递给 OrderByDescending

编辑:看看这个链接Enable Full Text Searching

关于c# - 基于计数的 orderby 相关性的 LINQ 关键字搜索 (LINQ to SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1322675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com