我在 Intranet 站点上运行一个简单的搜索,我想按与查询的相关性对结果进行排序。
这是我到目前为止所拥有的。
var customer = from c in db.Customer
select c;
if (!String.IsNullOrEmpty(searchString))
{
customer = customer.Where(c => SqlFunctions.StringConvert((double)c.CustomerID).Trim().Equals(searchString)
|| c.CustomerName.ToUpper().Contains(searchString.ToUpper())
|| SqlFunctions.SoundCode(c.CustomerName.ToUpper()) == SqlFunctions.SoundCode(searchString.ToUpper()));
}
switch (s)
{
case "NameDesc":
customer = customer.OrderByDescending(c => c.CustomerName);
break;
default:
customer = customer.OrderBy(c => c.CustomerName);
break;
}
当我使用 Sounds Like 时,它会返回其他可能的匹配项,这对我很有用,但是我希望与在搜索框中键入的内容最接近的匹配项首先出现在结果中。
这是否可以使用 OrderBy 上的查询来完成,或者我是否需要使用全文搜索?