【问题标题】:Linq (or SQL): Get a search query and sort it order by best result [closed]Linq(或 SQL):获取搜索查询并按最佳结果排序 [关闭]
【发布时间】:2011-05-16 19:52:00
【问题描述】:

我想为我的网站创建一个搜索页面。逻辑是用户输入一些关键字,我应该搜索这些词,然后按最佳匹配对结果进行排序。 IE: 用户输入:“MVC Microsoft WPF ASP.Net”。 我想显示那些包含最多匹配项的结果,例如:

最佳匹配:
学习微软 ASP.Net MVC
如何在 Microsoft ASP.Net 中托管 WPF 表单

部分匹配:
微软 MVC
微软 WPF
微软 ASP.Net
ASP.Net MVC

关键字匹配:
MVC
微软
WPF
ASP.NET

【问题讨论】:

  • 您可以发布一些代码/您遇到的问题吗?
  • 你使用的是什么数据库服务器?

标签: c# .net sql asp.net-mvc linq


【解决方案1】:

试试Lucene.NET,它默认按相关性对搜索结果进行排序

【讨论】:

    【解决方案2】:

    终于找到了真正的解决方案。

    那是“全文索引”。

    完整的教程在这里:

    http://blog.sqlauthority.com/2008/09/05/sql-server-creating-full-text-catalog-and-index/

    【讨论】:

      【解决方案3】:

      根据您搜索的内容/方式,一个简单的解决方案是构建您的网站,使其在 Google 上被完全索引并利用 Google Custom Search API

      【讨论】:

        【解决方案4】:

        这是一个基本策略;它需要一个存储过程:

        1. 用空格分割关键字字符串,并用 '%' 填充。
        2. 对于每个搜索词,对同一个内存临时表执行插入选择。您将获得重复的行,每条记录一个搜索词的每个“命中”。
        3. 从此临时表中选择每个不同的结果,并计算结果在临时表中出现的次数。这是您的“相关性”,您可以根据它进行排序。

        【讨论】:

        • 这个思路不错但是不知道怎么统计每个唯一结果的个数,有什么思路吗?
        • 使用 Group By 函数会起作用。例如SELECT result, Count(result) FROM #MyTempTable GroupBy result;
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 2021-08-19
        • 1970-01-01
        • 2020-06-13
        • 1970-01-01
        相关资源
        最近更新 更多