我有一个包含超过200万个名称,阶段,位置等的数据库/字典。示例数据如下:
“A person who never made a mistake never tried anything new”
“Nelson Mandela”
“United States of America”
“I didn't attend the funeral, but I sent a nice letter saying I approved of it.”
“Joseph Campbell”
“Insanity: doing the same thing over and over again and expecting different results”
“United Kingdom of Great Britain and Northern Ireland”
对于每个条目,都有一个ID。
现在,当用户向我的网站提交文本时,将对文本进行分析,并在文本中找到所有名称,阶段和位置的外观,并带有一些宽恕(近似匹配)。例如:
我不知道这是否是命名实体问题,因为我的数据库的阶段长度超过2行。我也不想找到确切的相位,我想近似匹配。
我正在寻找开源解决方案。提前致谢
答案 0 :(得分:2)
一种可能的解决方案是查看像Lucene这样的搜索引擎。它基本上创建了自己的数据库,您可以在其中放置文档 - 在您的情况下“疯狂:一遍又一遍地做同样的事情并期待不同的结果”。然后你可以用“疯狂,一遍又一遍”进行搜索,引擎会给你一个有序的结果列表。它具有高度可配置性。
根据您的任务,您可能会使用您需要匹配的短语来实现自己的inverted index。或者你可以实现一个增强的Levenshtein distance,为特定的短语提供更好的分数。
答案 1 :(得分:0)
我知道这是一个老问题,但我找到了解决这个问题的方法,我想与大家分享。
https://github.com/flaxsearch/luwak 现在是 Lucene 8.2 版的一部分,它是一个“高性能存储查询引擎。简单地说,它允许您定义一组搜索查询,然后监视文档流任何可能匹配这些查询的功能:也称为“反向搜索”和“文档路由”的功能。“