这个问题要先分成两个方面:
- 如何取得汉字的拼音首字母
- 如何支持首字母搜索
第1点可以通过pinyin4j来粗略实现。
搜索不是无源之水,第2点的前提是有物可搜,也就是要有数据源。为了效率,数据源并不是简单的文本文件,而是集中式的索引。建立索引的过程,就是把酒从最原始数据的瓶装到索引的新瓶里,形成键-值对。
然后再看看怎么搜索。建立索引的目的就是快速搜索,而搜索引擎应该支持精确查找,范围查找以及模糊查找。
如果一句话的首字母都做为键,期望只输入几个字母就搜出来,那么就要用模糊查找。
需注意的问题,中文存在多音字,一个字的读音需要连词来确定。因此需要维护一张多音字表,用于匹配正确读音。
第2点可以通过lucene来实现。