gpt4 book ai didi

c# - 如何创建更精准的搜索?

转载 作者:太空狗 更新时间:2023-10-29 23:00:12 26 4
gpt4 key购买 nike

无论是在 jquery 还是 c# 中,我都需要一个准确的搜索功能。如果可能的话,我希望搜索像谷歌一样出色:-)

C#代码如下:

简要说明:
这将搜索数据库中具有完整信息的所有用户。它搜索除当前登录用户之外的所有用户。

string[] ck = keyword.Split(new string[] { " ", ",", "." },
StringSplitOptions.RemoveEmptyEntries);

using (dbasecore db = ConfigAndResourceComponent.BaseCampContext())
{
var results = (from u in db.users
join uinfo in db.userinfoes
on u.UserID equals uinfo.UserID
where u.UserID != userid &&
(ck.Contains(u.LastName) || ck.Contains(u.FirstName) ||
ck.Contains(u.MiddleName) || ck.Contains(u.LoginID))
orderby u.LastName, u.FirstName, u.MiddleName ascending
select uinfo).Skip(skip).Take(take).ToList();

return (from i in results select new UserInfo(i)).ToList();
}

结果:

enter image description here

被圈起来的名字必须在搜索项的顶部,因为它匹配更多的关键字。
有什么想法吗?

最佳答案

有几种方法可以实现你想要的:

1) 编写自己的排名算法。这意味着,您使用 Linq 获得结果,然后使用自己的排名函数对它们进行排序——这可能很简单,比如将请求拆分为单词并计算这些单词在每个结果中的出现次数,或者更复杂的事情,比如使用词干提取来查找不同形式的请求术语、测量术语之间的距离、提升某些术语等。我不建议这样做 - 因为 Like 查询在 SQL 上很慢,你需要写一些已经写好的东西。

2) 使用 Sql Server 全文搜索:http://msdn.microsoft.com/en-us/library/ms142524(v=sql.105).aspx .虽然我不喜欢使用 SQL Server 全文搜索,但它是一个很好且可行的解决方案。

3) 使用第三方全文搜索,有一些替代方案,Lucene ( http://www.codeproject.com/Articles/29755/Introducing-Lucene-Net ) 可能是.net 中使用最多的。这给了你速度和灵 active ,你可以用各种方式索引你的数据,但你肯定会响应索引它。在 Lucene 之上还有一些 API,例如我最喜欢的 Solr - 尽管对您来说可能太多了。

关于c# - 如何创建更精准的搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com