@@ -2,7 +2,6 @@ package org.bitlap.geocoding;
22
33import org.bitlap.geocoding.core.Context
44import org.bitlap.geocoding.model.Address
5- import org.bitlap.geocoding.model.Address.Companion.build
65import org.bitlap.geocoding.model.RegionEntity
76import org.bitlap.geocoding.model.RegionType
87import org.bitlap.geocoding.similarity.Document
@@ -16,62 +15,62 @@ import org.bitlap.geocoding.similarity.MatchedResult
1615 */
1716object Geocoding {
1817
18+ @JvmField
19+ val DEFAULT = GeocodingX ()
20+
1921 /* *
2022 * 地址的标准化, 将不规范的地址清洗成标准的地址格式
2123 */
2224 @JvmStatic
2325 fun normalizing (address : String ): Address ? {
24- return build( Context .getInterpreter().interpret( address) )
26+ return DEFAULT .normalizing( address)
2527 }
2628
2729 /* *
2830 * 将地址进行切分
2931 */
3032 @JvmStatic
3133 fun analyze (address : String ): Document ? {
32- val addr = normalizing(address) ? : return null
33- return Context .getComputer().analyze(addr)
34+ return DEFAULT .analyze(address)
3435 }
3536 @JvmStatic
3637 fun analyze (address : Address ? ): Document ? {
37- address ? : return null
38- return Context .getComputer().analyze(address)
38+ return DEFAULT .analyze(address)
3939 }
4040
4141 /* *
4242 * 地址的相似度计算
4343 */
4444 @JvmStatic
45- fun similarity (addr1 : String , addr2 : String ): Double {
46- val compute = Context .getComputer().compute(
47- normalizing(addr1),
48- normalizing(addr2)
49- )
50- return compute.similarity
45+ fun similarity (address1 : String , address2 : String ): Double {
46+ return DEFAULT .similarity(address1, address2)
5147 }
5248 @JvmStatic
53- fun similarity (addr1 : Address ? , addr2 : Address ? ): Double {
54- val compute = Context .getComputer().compute(addr1, addr2)
55- return compute.similarity
49+ fun similarity (address1 : Address ? , address2 : Address ? ): Double {
50+ return DEFAULT .similarity(address1, address2)
5651 }
5752
5853 /* *
5954 * 地址相似度计算, 包含匹配的所有结果
6055 */
6156 @JvmStatic
62- fun similarityWithResult (addr1 : String , addr2 : String ): MatchedResult {
63- return Context .getComputer().compute(
64- normalizing(addr1),
65- normalizing(addr2)
66- )
57+ fun similarityWithResult (address1 : String , address2 : String ): MatchedResult {
58+ return DEFAULT .similarityWithResult(address1, address2)
6759 }
6860 @JvmStatic
69- fun similarityWithResult (addr1 : Address ? , addr2 : Address ? ): MatchedResult {
70- return Context .getComputer().compute(addr1, addr2)
61+ fun similarityWithResult (address1 : Address ? , address2 : Address ? ): MatchedResult {
62+ return DEFAULT .similarityWithResult(address1, address2)
63+ }
64+
65+ /* *
66+ * 深度优先匹配符合[text]的地址信息
67+ */
68+ fun match (text : String ): List <RegionEntity > {
69+ return DEFAULT .match(text)
7170 }
7271
7372 @JvmStatic
74- fun getContext (): Context = Context
73+ fun getContext (): Context = DEFAULT .ctx
7574
7675 /* *
7776 * 设置自定义地址
@@ -81,25 +80,11 @@ object Geocoding {
8180 * @param name 地址的名称
8281 * @param type 地址类型, [RegionType]
8382 * @param alias 地址的别名
83+ * @param replace 是否替换旧地址, 当除了[id]之外的字段, 如果相等就替换
8484 */
8585 @JvmStatic
86- fun addRegionEntry (id : Long , parentId : Long , name : String , type : RegionType = RegionType .Undefined , alias : String = "") {
87- val persister = getContext().getPersister()
88- persister.getRegion(parentId) ? : throw IllegalArgumentException (" Parent Address is not exists, parentId is $parentId " )
89- if (name.isBlank()) {
90- throw IllegalArgumentException (" name should not be blank." )
91- }
92- // 构建 region 对象
93- val region = RegionEntity ()
94- region.id = id
95- region.parentId = parentId
96- region.name = name
97- region.alias = alias
98- region.type = type
99- // 1. Add to cache (id -> Region)
100- persister.addRegionEntity(region)
101- // 2. Build term index
102- val indexBuilder = getContext().getInterpreter().getTermIndexBuilder()
103- indexBuilder.indexRegions(listOf (region))
86+ fun addRegionEntry (id : Long , parentId : Long , name : String , type : RegionType = RegionType .Undefined , alias : String = "", replace : Boolean = true): Geocoding {
87+ DEFAULT .addRegionEntry(id, parentId, name, type, alias, replace)
88+ return this
10489 }
10590}
0 commit comments