Admin_Poker 2024-10-29 16:01 采纳率: 72.2%
浏览 11
已结题

solr 搜索分词问题,解决微信转账10,CSDN问题解决不了不退钱

遇到的问题

body字段存储网站的body,会查询body字段中的某段文件,body字段定义如下

  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

查询的时候查询body:"/remote/login",应该是经过index分词,查询出来的内容不是完全是/remote/login的,有的是包含remotelogin

需求

需要支持常规的分词查询,如remote、remotelogin,但是那种双引号查询的,能查询出包含完整/remote/login的词,而不是有的一些是body满足有remote、login的词

  • 写回答

2条回答 默认 最新

  • Admin_Poker 2024-10-29 16:51
    关注

    好像可以了,嘿嘿,可以这样子解决

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
          <tokenizer class="solr.KeywordTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.KeywordTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
      </fieldType>
    

    然后查询的时候用body_raw:/remote/login就可以查询出来,这样子设计,用正则,不用本身的那个查询

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 修改了问题 10月29日
  • 创建了问题 10月29日