路湘雨伦 2019-12-20 19:08 采纳率: 0%
浏览 691
已结题

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

比如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这个参数,可是结果还是不行。

  • 写回答

2条回答

  • ? ? ? ? ? ? ? 2019-12-20 20:23
    关注

    solr查询,查询配置了查询分词器的字段,默认会对查询关键字做分词处理
    1、如查询关键字F1501ZY000011,使用solr7自带的中文分词器,默认会分词为:f,1501,zy,000011
    2、不使用defType=edismax参数的查询结果
    二、使用参数defType=edismax&mm=100%,指定查询关键字分词后,满足匹配所有
    三、java的solrj中指定defType=edismax参数
    SolrQuery solrQuery = new SolrQuery(q);
    //设置匹配度100%
    solrQuery.set("defType","edismax");
    solrQuery.set("mm","100%");

    ———————————————

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于#flink#的问题:关于docker部署flink集成hadoop的yarn,请教个问题flink启动yarn-session.sh连不上hadoop
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题