Solr实现类似MySQL的LIKE查询功能
某厂面试归来,发现自己落伍了!>>> 最近在工作中遇到需要对大文本进行关键词查询。需要实现的效果为,当用户输入一个字或者一个词,要搜出包含这个字或者词的所有内容。就相当于 MySQL 的 LIKE 查询效果一样。 在这种场景下,第一时间想到的肯定是直接使用 MySQL 存储,然后进行查询就可以了,完全符合业务需求。但是经过尝试,当数据量比较大的时候,查询的速度慢得让人根本无法接受。 于是只能考虑其他方案,由于和搜索有关,于是想到了之前使用过的 Solr 。经过一系列折腾,最后得出最终方案如下。 schema 设计的时候,需要自定义字段类型,使用 solr.NGramTokenizerFactory 分词器,并且将分片参数设置成1。 <fieldType name="text_ng1" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="1"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1"