我在C# (实体框架)和Postgresql中工作,但我并不反对使用Python甚至Javascript。我想要能够处理搜索,产生相关的结果。例如,假设我在一个非常大的数据库中有一行,其中display_name是迈克的折扣汽车,我希望用户能够使用各种方式搜索它。我一直在使用LINQ和Levenshtein距离的东西,但我似乎不能很好地理解它。对于上面的例子,我希望下面的搜索能够真正找到Mike‘s折扣汽车
yada yada yada。我的每一种策略似乎都很有效,但也有很大的差距。我使用regex删除非字母数字字符,我使用Levenshtein距离搜索拼写错误,但即使是这2种策略,如果有人键入Mikes,因为Levenshtein距离非常高,比像Bobs折扣汽车。对于第二个例子,距离较低,但显然不是正确的。再加上我添加的东西越多,搜索速度就越慢。现在,有了一个由33万行组成的数据库,从http request -> lambda -> ->返回客户端几乎需要整整一分钟的时间!这是不能接受的。我的lambda确实需要更快一些,但真正放慢速度的是我的代码。
我正在寻找任何资源,在如何有效地处理这(即书籍,网站,课程关于udemy)。
发布于 2022-07-30 16:53:50
你试过trgm了吗?它并不特别聪明(例如,它不理解词性、同义词或连词),但Levenshtein也不是,而且pg_trgm通常要快得多,因为它可以使用索引。
而且没有人会觉得"Mikes“比”Bobs折扣汽车“更像”Mikes折扣汽车“,所以你的例子是没有意义的。
https://stackoverflow.com/questions/73176725
复制相似问题