Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 存储/规范化和搜索地址数据_Java_Mongodb_Search_Addressbook - Fatal编程技术网

Java 存储/规范化和搜索地址数据

Java 存储/规范化和搜索地址数据,java,mongodb,search,addressbook,Java,Mongodb,Search,Addressbook,我有很多与姓名相关的地址数据。地址有多种格式。例如: 街道名称街1号,县,镇。 县、镇街道名称街1号。 小镇StreetName街1号BuildingName 1号公寓。 县、镇街道名称街1号楼。 市区StreetName街1号1室。 县城街道名称街1号BuildingName 1号公寓。 我对每个地址都有单独的英国邮政编码数据,并对这些数据进行了规范化,以便即使每行内容不一致,大小写和分隔符也保持一致。不一致的措辞,如Street vs St仍然存在 到目前为止,我的方法取得了合理但有限的成功

我有很多与姓名相关的地址数据。地址有多种格式。例如:

街道名称街1号,县,镇。 县、镇街道名称街1号。 小镇StreetName街1号BuildingName 1号公寓。 县、镇街道名称街1号楼。 市区StreetName街1号1室。 县城街道名称街1号BuildingName 1号公寓。 我对每个地址都有单独的英国邮政编码数据,并对这些数据进行了规范化,以便即使每行内容不一致,大小写和分隔符也保持一致。不一致的措辞,如Street vs St仍然存在

到目前为止,我的方法取得了合理但有限的成功。我已经为邮政编码编制了索引,并强制用户选择邮政区,从而将数据分割成更小的可用数据块。在那之后,我将继续使用正则表达式查询,目前我正在使用mongo查找地址以查找街道名称

然而,由于目前为止我只能规范化的措辞不一致,例如:在数据库级别查询或规范化时,从用户查询生成High Street | St,这并不是非常准确或快速的


我意识到这是一个相当开放的问题,但人们会如何建议将其用于搜索和/或进一步规范化?我必须强制执行的搜索限制包括不能按姓名搜索,以及在将搜索范围缩小到单个街道/道路之前不能解析为人。请注意,有些地址没有街道/道路信息!。请注意,很多数据都是历史性的,所以通过谷歌或其他途径查找这些数据并不是一个真正的选择。

您是否看过类似的内容?在我之前的一个工作场所,我们遇到了类似的问题,我们最终使用lucene处理自由文本搜索,让它只返回匹配记录的id,然后从遗留数据库系统中查找实际数据,替换数据库不是一个选项。我只是想尝试对地址字段进行全文索引,看看效果如何。我不知道Mongo用什么来做这件事,但如果它是基于lucene的,我也不会感到惊讶。目前它也是一个测试版功能。我担心的是,文本搜索诸如伦敦路、巴斯等东西会返回大量其他地方的伦敦地址或伦敦小姐路、巴斯等。我想我必须尝试一下,看看它在这些情况下的表现。在Mongo中,每个查询也限制为100个结果。也许一个单独的lucene索引是一个不错的选择。我要补充一点,尽管我目前已经在mongo上构建了它,但它是一个原型,所以其他更合适的数据后端仍然是一个选择。我在这里还发现了一个非常棒的短端地址表单列表,我希望可以用它来进一步正常化:@tom,mongo内置的全文搜索不会做你想做的事情。它是从头开始构建的,不基于lucene,只支持非常基本的搜索单词、短语以及单词和短语的否定。搜索ondon不会返回包含伦敦的文件。话虽如此,看看它是否适合你的申请。为@JonathanF的信息干杯