拼音搜索

0.介绍

拼音搜索常用与电话本或音视频查找,如果输入“zs” “zhangsan"期望能够出现”张三“ ”zhang San”。

1.提取关键词

将”张三“ ”zhang San”提取成”张“”三“ ”zhang“ ”San”。

代码如下

	private static final String KONG = "";
	private static final char SPACE = ' ';

	public static String getStringKeyWord(String str) {
		String[] strArrary = new String[str.length()];
		// int
		int index = converToArray(str, strArrary);

		for (int i = 0; i < index; i++) {
			System.out.print("getStringKeyWord i:" + i + " strArray:" + strArrary[i] + "\n");
		}
		return null;
	}

	private static int converToArray(String str, String[] strArray) {
		int index = 0;
		String strTemp = KONG;
		for (int i = 0; i < str.length(); i++) {
			char word = str.charAt(i);
			if (isEnglishOrDigit(word)) {
				strTemp += Character.toString(word);

			} else if (isSpace(word)) {
				if (!KONG.equals(strTemp)) {
					strArray[index++] = strTemp;
					strTemp = KONG;
				}
			} else {
				if (!KONG.equals(strTemp)) {
					strArray[index++] = strTemp;
					strTemp = KONG;
				}
				strTemp += Character.toString(word);
				if (!KONG.equals(strTemp)) {
					strArray[index++] = strTemp;
					strTemp = KONG;
				}
			}
			if (i == str.length() - 1) {
				if (!KONG.equals(strTemp)) {
					strArray[index++] = strTemp;
					strTemp = KONG;
				}
			}
		}

		return index;
	}

	private static boolean isEnglishOrDigit(char word) {
		if (('0' <= word && word <= '9') || ('a' <= word && word <= 'z') || ('A' <= word && word <= 'Z')) {
			return true;
		}
		return false;
	}

	private static boolean isSpace(char word) {
		if (SPACE == word) {
			return true;
		}
		return false;
	}

2.先记录下,后续在整理上传

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现拼音搜索功能的方法主要有两种: 1. 基于全文检索引擎,如 Elasticsearch、Solr 等,利用其支持中文分词和拼音转换的功能,将数据存储到搜索引擎中,然后通过搜索引擎提供的 API 进行搜索操作。 2. 自建拼音检索表,将需要被检索的字段的拼音转换后存储到一个大表中,然后通过 SQL 语句进行搜索操作。 下面以第二种方法为例,介绍一下如何实现拼音搜索功能: 1. 创建拼音检索表 拼音检索表可以使用 MySQL 或其他关系型数据库创建。表结构如下: ``` CREATE TABLE pinyin_index ( id int(11) NOT NULL AUTO_INCREMENT, text varchar(255) NOT NULL COMMENT '原始文本', pinyin varchar(255) NOT NULL COMMENT '拼音', PRIMARY KEY (id), KEY pinyin (pinyin) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='拼音检索表'; ``` 2. 插入数据 将需要被检索的字段转换成拼音后插入到拼音检索表中。这里以一个简单的例子来说明: 假设要检索的字段为 `name`,原始值为 `张三`,则可以使用 Python 的 pypinyin 库将其转换成拼音: ```python from pypinyin import lazy_pinyin name = '张三' pinyin = ''.join(lazy_pinyin(name)) ``` 将 `name` 和 `pinyin` 插入到拼音检索表中: ``` INSERT INTO pinyin_index (text, pinyin) VALUES ('张三', 'zhangsan'); ``` 3. 搜索操作 使用 SQL 语句进行搜索操作,如下所示: ```sql SELECT text FROM pinyin_index WHERE pinyin LIKE '%zhang%' AND pinyin LIKE '%san%'; ``` 这条 SQL 语句会搜索出所有拼音中包含 `zhang` 和 `san` 的记录,即 `张三`。 需要注意的是,由于拼音可能会有多音字的情况,所以需要对数据进行去重操作,以避免搜索结果出现重复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值