イントラネット サイトで単純な検索を実行しており、クエリとの関連性によって結果を並べ替えたいと考えています。
これが私がこれまでに持っているものです。
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 でクエリを使用してこれを行うことは可能ですか、それとも全文検索を使用する必要がありますか?