专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

solr按指定字符串进行分词,拥有重复值,如何进行完全匹配查询

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:11:02       共计:3617 浏览
比如solr里面有几条索引,分别如下:
索引1: A|B|C|A|B|C
索引2: A|A|A|B|B|B
索引3: C|C|C|A|A|A
索引4: A|B|A|B|A|B
...
...

我输入的关键字q为 :A|A|B|B|A|B,按“|”进行分词,分词后的结果为 A,A,B,B,A,B,即3个A,3个B,去solr进行查询,我想把索引当中包含3个A并且是3个B的查询出来,即完全匹配,我想得到的的结果是索引2跟索引4两条结果。可是对于索引1,它分词后为A,B,C,A,B,C,也是会查询出来的,因为它包含了A,B,但是这个不是我想要的结果,我需要的是完全匹配,即结果是3个A跟3个B,并不是包含A跟B,请问有好的解决办法吗?试着用mm=6这个参数,可是结果还是不行。

解决方案

solr查询,查询配置了查询分词器的字段,默认会对查询关键字做分词处理
1、如查询关键字F1501ZY000011,使用solr7自带的中文分词器,默认会分词为:f,1501,zy,000011
2、不使用defType=edismax参数的查询结果
二、使用参数defType=edismax&mm=100%,指定查询关键字分词后,满足匹配所有
三、.net的solrj中指定defType=edismax参数
List<KeyValuePair<string, string>> ss = new List<KeyValuePair<string, string>>();
                ss.Add(KV.Create("wt", "xml"));
                ss.Add(KV.Create("defType", "edismax"));
                ss.Add(KV.Create("mm", "100%"));
                options.ExtraParams = ss;

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:使用nginx部署Vue项目,刷新出现404 | ·下一条:Solr之精确、匹配、排序、模糊查询

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有