C# 一次输入的智能搜索
我一直在浏览一些社交网络,发现有一种按姓名、年龄范围、城市、国家和性别搜索人的功能。 有趣的是,所有这些信息都可以插入到一个文本框中,文本框之间用空格隔开。然后,搜索引擎以非常精确的方式解析它,并返回一个结果列表 一方面,它看起来非常简单:按空间分割查询,并搜索所有相关表以查找匹配项。到现在为止,一直都还不错。 然而C# 一次输入的智能搜索,c#,php,sql,C#,Php,Sql,我一直在浏览一些社交网络,发现有一种按姓名、年龄范围、城市、国家和性别搜索人的功能。 有趣的是,所有这些信息都可以插入到一个文本框中,文本框之间用空格隔开。然后,搜索引擎以非常精确的方式解析它,并返回一个结果列表 一方面,它看起来非常简单:按空间分割查询,并搜索所有相关表以查找匹配项。到现在为止,一直都还不错。 然而 有些城市的名称超过2个单词,用户可以以不同的方式输入,因为这是免费文本 有超过2个单词的名称 问题: 我们如何能够以这样的方式拆分查询,从而确定是哪种查询 它的一部分应该在哪里搜索
我不知道我所做的一切是否朝着正确的方向发展。只是一个起点 PS:我只需要一个算法流,所以编程语言并不真正需要。任何想法或指导都是非常受欢迎的
谢谢这种查询不适合
关系数据库
。如果这不是必须的,你可能会想使用或我在这里没有经验,但我想这是必须的
我认为做这种处理的一部分是接受你不会总是正确的。因此,您的目标是尝试确定您对做出某些假设有信心的情况
比如说,
如果用户在纽约市搜索jane doe,他们不会将其键入为jane new york city doe
,名称和城市将始终是连续的组。你不知道每组的长度,但是,你只有有限数量的组合可以尝试。给定纽约市jane doe,可以迭代相邻组的组合
scoreAsName('jane')
scoreAsName('jane doe')
scoreAsName('jane doe new')
……等等。。。
对Scorescity也一样
两者都应该有一些明确的高分组合。也许,最好的选择是名字和城市分数的组合,这将产生最高的总和。您需要制定一个评分算法,可能主要基于数据库匹配,但也可能使用辅助输入,如提高本地名称匹配的分数
非常有趣的话题