com.supermap.analyst.addressmatching
类 AddressMatch

java.lang.Object
  继承者 com.supermap.analyst.addressmatching.AddressMatch

public class AddressMatch
extends java.lang.Object

中文地址模糊匹配类。

该类主要提供实现中文地址模糊匹配所必须的条件,包括使用的地址词典、数据集、参与匹配的字段;还提供了实现中文地址模糊匹配的方法。

中文地址模糊匹配的实现流程:

    中文地址模糊匹配的相关设置,主要通过 AddressMatch 类的 setSetting() 方法设置,包括使用的地址词典、数据集、参与匹配的字段;
  1. 加载中文地址模糊匹配的相关设置,在完成中文地址模糊匹配的设置之后,要使用 AddressMatch 类的 load() 方法加载设置,才会使所做的设置生效,同时在加载的过程中,系统将对参与分析的数据集中指定的参与匹配的字段中的内容建立索引,同时对其进行分词,即将这些字段中存储的内容切分成有意义的词,而这一过程是基于地址词典进行的;
  2. 调用 AddressMatchmatch() 方法,实现中文地址模糊匹配,搜索关键字的指定是在match(AddressMatchParameter parameter) 方法的 parameter 参数中指定的;
  3. 系统对待匹配的关键字进行分词,然后去匹配指定数据集中指定字段中的内容,通过一定的运算,返回匹配的结果。

注:地址词典

英文是以词为单位,词与词之间用空格隔开,例如【Thank you.】 计算机很容易通过空格来识别 you 是一个单词。而中文是以字为单位,通过字组成的句子来表述意思。例如,【我爱北京天安门】,计算机很难知道【天安门】是一个不能拆分的词,这就需要我们进行分词。把中文的汉字序列切分成有意义的词的过程,就是中文分词。而中文分词是基于地址词典进行的,地址词典就是一些有意义的词的集合。中文分词的准确与否,直接影响到中文地址模糊匹配结果的正确性和相关度的排序。

举例说明:【北京天安门】,如果地址词典里面有“北京”、“天安门”等词,则【北京天安门】就会被分词为“北京/ 天安门”。 只有输入 “北京”或“天安门”这两个词中的一个或两个都作为关键词进行搜索,“北京天安门”才能被匹配并搜索出来。

示例:
以下代码示范如何进行中文地址模糊匹配。
   public AddressMatchResults AddressMatchExample(DatasetVector targetDataset, String fieldName, String dictionaryFile, String searchAddress)
{
    //进行中文地址模糊匹配的设置
    AddressMatchSetting addressMatchSettings = new AddressMatchSetting();
    addressMatchSettings.addSearchData(targetDataset,fieldName);
    addressMatchSettings.setDictionaryFile (dictionaryFile);

    //设置进行中文地址模糊匹配操作时的参数
    AddressMatchParameter addressMatchParam = new AddressMatchParameter();
    addressMatchParam.addSearchDataset(targetDataset);
    addressMatchParam.setLocationReturn ( true);
    addressMatchParam.setResultCount (10);

    addressMatchParam.setSearchAddress (searchAddress);

    //加载设置的中文地址模糊匹配设置
    AddressMatch addressMatch = new AddressMatch();
    addressMatch.setSetting (addressMatchSettings);
    addressMatch.load();

    //调用中文地址模糊匹配方法,返回匹配结果
    AddressMatchResults addressMatchResults =addressMatch.match(addressMatchParam);
    return addressMatchResults;
}
 

构造方法摘要
AddressMatch()
          默认构造函数,构造一个 AddressMatch 新对象。
 
方法摘要
 void dispose()
          释放对象所占用的资源。
 AddressMatchSetting getSetting()
          返回中文地址模糊匹配设置对象。
 boolean load()
          加载中文地址模糊匹配的相关设置。
 AddressMatchResults match(AddressMatchParameter parameter)
          根据指定的中文地址模糊匹配参数对象进行实现地址匹配,返回地址匹配的结果。
 java.lang.String segmentAddress(java.lang.String address)
          根据地址词典对传入的中文地址进行分词,并返回分词的结果,在分词结果中将以“*”来分隔原中文地址中的各个词。
 void setSetting(AddressMatchSetting value)
          设置中文地址模糊匹配设置对象。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

AddressMatch

public AddressMatch()
默认构造函数,构造一个 AddressMatch 新对象。

方法详细信息

getSetting

public AddressMatchSetting getSetting()
返回中文地址模糊匹配设置对象。有关详情,请参见 AddressMatchSetting 类。

返回:
中文地址模糊匹配设置对象。
默认值:
默认值为 AddressMatchSetting 的默认值。

setSetting

public void setSetting(AddressMatchSetting value)
设置中文地址模糊匹配设置对象。通过该方法可以设置地址匹配所使用的地址词典、参与地址匹配的数据集以及参与匹配的字段,有关详情,请参见 AddressMatchSetting 类。

参数:
value - 中文地址模糊匹配设置对象。

load

public boolean load()
加载中文地址模糊匹配的相关设置。

注:地址词典

英文是以词为单位,词与词之间用空格隔开,例如【Thank you.】 计算机很容易通过空格来识别 you 是一个单词。而中文是以字为单位,通过字组成的句子来表述意思。例如,【我爱北京天安门】,计算机很难知道【天安门】是一个不能拆分的词,这就需要我们进行分词。把中文的汉字序列切分成有意义的词的过程,就是中文分词。而中文分词是基于地址词典进行的,地址词典就是一些有意义的词的集合。中文分词的准确与否,直接影响到中文地址模糊匹配结果的正确性和相关度的排序。

举例说明:【北京天安门】,如果地址词典里面有“北京”、“天安门”等词,则【北京天安门】就会被分词为“北京/ 天安门”。 只有输入 “北京”或“天安门”这两个词中的一个或两个都作为关键词进行搜索,“北京天安门”才能被匹配并搜索出来。

返回:
如果载入成功,返回值为 true,否则为 false。
示例:
请参见 AddressMatch 类的示例。

match

public AddressMatchResults match(AddressMatchParameter parameter)
根据指定的中文地址模糊匹配参数对象进行实现地址匹配,返回地址匹配的结果。

参数:
parameter - 指定的中文地址模糊匹配参数类对象,该参数提供了待匹配的内容等,有关地址匹配参数的详情,请参见 AddressMatchParameter 类。
返回:
中文地址模糊匹配结果集合对象。
示例:
请参见 AddressMatch 类的示例。

segmentAddress

public java.lang.String segmentAddress(java.lang.String address)
根据地址词典对传入的中文地址进行分词,并返回分词的结果,在分词结果中将以“*”来分隔原中文地址中的各个词。

举例:”我爱北京天安门”,经过该方法分词后的结果字符串为:”我*爱*北京*天安门”。

注:地址词典

英文是以词为单位,词与词之间用空格隔开,例如【Thank you.】 计算机很容易通过空格来识别 you 是一个单词。而中文是以字为单位,通过字组成的句子来表述意思。例如,【我爱北京天安门】,计算机很难知道【天安门】是一个不能拆分的词,这就需要我们进行分词。把中文的汉字序列切分成有意义的词的过程,就是中文分词。而中文分词是基于地址词典进行的,地址词典就是一些有意义的词的集合。中文分词的准确与否,直接影响到中文地址模糊匹配结果的正确性和相关度的排序。

举例说明:【北京天安门】,如果地址词典里面有“北京”、“天安门”等词,则【北京天安门】就会被分词为“北京/ 天安门”。 只有输入 “北京”或“天安门”这两个词中的一个或两个都作为关键词进行搜索,“北京天安门”才能被匹配并搜索出来。

举例:我爱北京天安门,加入分隔符后:我*爱*北京*天安门。

参数:
address - 指定的中文地址。
返回:
加入分隔符后的分词结果字符串。

dispose

public void dispose()
释放对象所占用的资源。调用该方法之后,此对象不再可用。