データベースに接続されたかなり単純な MVC webapp があります。ユーザーは、単一のテーブルから特定のレコードを取得する検索ページを必要としています。ユーザーは 1 つ以上のキーワードを指定できます。検索機能は、タイトル、説明、または poc の 3 つの異なる列にこれらのキーワードを含むレコードを検索する必要があります。
次の設定がありますが、正しくありません。いずれかのキーワードを含むレコードを提供しています。結果は、すべてのキーワードを含むレコードである必要があります。また、これが検索関数を作成する最良の方法であるかどうかはわかりません...
// searchString contains all keywords delimited by spaces
string[] keywordArray = Regex.Split(searchString, "\\s");
var model = new List<MyTable>();
foreach (string word in keywordArray)
{
foreach (var record in myTableRepository.MyTable.Where(x => x.title.ToLower().Contains(word.ToLower()) || (x.description != null && x.description.ToLower().Contains(word.ToLower())) || (x.poc != null && x.poc.ToLower().Contains(word.ToLower()))).ToList())
{
model.Add(new MyTable
{
id = record.id,
title = record.title,
description = record.description,
poc = record.poc
});
}
}
return View(model);
たとえば、ユーザーが次の検索基準「john test phase」を指定した場合、結果は次のようになります。
title description poc
Lorem Ipsum Test A Phase A lorem ipsum john doe
Lorem Ipsum phase This is john test for jack jane doe
Lorem Ipsum John test for jim clark phase
等..
アドバイスとヒントを事前にありがとう!