我需要根据搜索生成一个自动完成的关键字建议列表,其中每个关键字都有一组关键字搜索:
关键字类:
public class Keyword
{
public int Id { get; set; }
public string Name { get; set; }
}
public class KeywordSearch
{
// Primary properties
public int Id { get; set; }
public string Name { get; set; }
public Keyword Keyword { get; set; }
}
所以如果有像“公司名称”这样的关键字,我将有关键字搜索“公司”和“名称”。
我现在拥有的功能不正常的是:
public IList<KeywordDto> GetAllBySearch(string keywords, int numberOfRecords)
{
var splitKeywords = keywords.Split(new Char[] { ' ' });
var keywordQuery = _keywordRepository.Query.Where(p => p.IsActive == true);
var keywordSearchQuery = _keywordSearchRepository.Query;
var keywordIds = keywordSearchQuery
.GroupBy(k => k.Keyword.Id)
.Where(g => splitKeywords.All(w => g.Any(k => w.Contains(k.Name))))
.Select(g => g.Key);
IList<KeywordDto> keywordList = (from kw in keywordQuery
join kwids in keywordIds on kw.Id equals kwids
select new KeywordDto { Id = kw.Id, Name = kw.Name })
.Take(numberOfRecords)
.Distinct()
.OrderBy(p => p.Name).ToList();
return keywordList;
}
我需要基于关键字字符串构建一个关键字列表,因此如果关键字 =“Compa”我返回“公司名称”,其中“Comp”部分带有粗体样式,或者如果关键字 =“Compa Nam”我返回“公司名称”大胆风格的“Compa Nam”等...
现在发生的事情是它无法在关键字搜索中找到“Comp”部分。
有什么建议吗?
谢谢