【Solr】 solr对拼音搜索和拼音首字母搜索的支持

问:对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输入拼音和拼音首字母就给出商品的信息,怎么办呢?

  实现方式有2种,但是他们其实是对应的。

  •  用lucene实现

  1.建索引, 多建一个索引字段,即拼音和拼音首字母这2个字段。合并的一个字段。

    (拼音和拼音首字母,可以通过pinyin4j.jar。将想要进行拼音搜索的字段进行拼音转换。)

  2.对输入的参数判断是否是拼音,(可以通过将传人的值转换为 utf-8 形式,如果转换后的字符串长度大于原来的字符串的长度,那么就不是拼音。否则就进行拼音查询)

  3.对拼音索引那个字段进行查询,和中文查询一样。参考中文查询。

  •      solr实现

   1.solr实现,不可以用solr自带的功能建索引,那样做无法将拼音和拼音首字母这个字段放入到索引文件中。

   2.想要将拼音放到索引文件库中,即需要从数据库取数据,然后将数据转换成拼音,再将拼音放入到索引库中。

    (用自动建索引的时候是通过db-config.xml文件进行的对数据库的查询。所以无法对查询得到的字段进行拼音转换。)。以上功能用solrj进行实现。solrj提供对solr的一些扩展。

   3.对拼音字段进行查询,和中文查询一样。

  以上思路,经百度搜索,转摘自他人。还为实践,实践后,进行总结。

时间: 2024-12-15 08:38:31

【Solr】 solr对拼音搜索和拼音首字母搜索的支持的相关文章

.net core 通过PinYinConverterCore实现汉字转拼音,获取中文字符串首字母

目录 一.事故现场 二.解决方法 一.事故现场 项目之前使用的.net framework,可以通过引用 Microsoft.International.Converters.PinYinConverter 类库.来实现汉字转拼音. 现在项目移植到.net core,之前的类库已不能使用. 二.解决方法 使用PinYinConverterCore包来实现汉字转拼音. 1.安装方法 Nuget Install-Package PinYinConverterCore .NET CLI dotnet

Android通讯录模糊查询搜索(号码,姓名,首字母简拼,全拼),批量选取联系人

Android通讯录模糊查询搜索(号码,姓名,首字母简拼,全拼),批量选取联系人 公司最近的项目中遇到一个需求需要读取通讯录联系人,并需要支持对联系人的模糊查询及批量选取,网上找了好几个例子,模糊查询这块处理的都有点小瑕疵,最终自己在各位网友的辛勤贡献基础之上进行了优化,最终做出了联系人模糊查询. 支持以下功能: 1.按 号码 , 姓名 , 首字母简拼 , 全拼 模糊查询 2.支持[A-Z]快速导航 3.支持联系人按首字母分类 4.支持联系人批量选取. 具体github地址:  https://

iOS拼音搜索,拼音首字母搜索

扩展了一下 搜索框,能够实现拼音和首字母模糊搜索 基本搜索 [上一篇文章 ](https://www.cnblogs.com/wjw-blog/p/10724043.html iOS8之后搜索框的常规实例) #import "NSString+utility.h" @interface WJWPinyinSearchViewController ()<UISearchResultsUpdating,UITableViewDelegate,UITableViewDataSource

MySQL按照汉字的拼音排序、按照首字母分类

项目中有时候需要按照汉字的拼音排序,比如联系人列表.矿物分类等,有的还需要按拼音字母从A到Z分类显示. 如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了),直接在查询语句后面添加ORDER BY name ASC,查询结果将按照姓氏的升序排序:如果存储姓名的字段采用的是utf8字符集,需要在排序的时候对字段进行转码,对应的代码是ORD

【原创】字符串工具类--获取汉字对应的拼音(全拼或首字母)

1.引入pinyin4j-2.5.0.jar包 2.代码实现: import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.Hanyu

jQuery实现前端模糊匹配与首字母搜索

实现效果 源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>搜索框测试Demo</title> <style> .searchDiv {width: 400px;height: 400px;margin: 150px auto;} .on {font-size: 12px;font-weight: 700;color: red;

Lucene + Pinyin4J 提供首字母搜索(——)

遇到一个集团需求,要求在地址查询时候提供拼音搜索,第一反应应该不难,不过实现过程中却一波三折. 1.第一步是讲字段首字母进行索引,具体可以使用Pinyin4j提供的方法完成. 2.原来系统用的lucene3.0,分词用的ikanalyzer3.2 ,不支持连续字母和数字的分词,网上搜索下 ikanalyzer5.2 可以支持,下载下来发现必须用1.7JDK,如此高的版本,实际上已经把采纳的可能枪毙了.然后进行测试,发现仍然不行.最后找到 WildcardQuery 查询:具体代码如下 Boole

按照首字母搜索功能(mysql数据库执行语句)

select *  from `dd` order by ELT(INTERVAL(CONV(HEX(left(CONVERT(num USING gbk),1)),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1

(自创)城市组件,含拼音首字母搜索 基于angular的封装

啥都不说 先给思想 城市组件设计 1:四个集合: totalJson 总的json provinceJson 省份json cityJson 城市json countyJSon 区县json 输出的字符串: totalStr:形如 安徽-合肥-政务区 的字符串 cityAndCounStr:形如 合肥-政务区 的字符串 listContentJson:只含有城市的json 如:hf [ 合肥 海丰] 2:方法: Step1:所有的搜索转为对拼音的匹配 如:安/an  会匹配到 anhui  an