Solr宏扩展/参数替换

Solr宏扩展/参数替换,solr,parameters,macros,Solr,Parameters,Macros,我在Solr工作,负责宏扩展。我想在Solr中使用参数替换来更改查询字符串,而不需要用Java编写额外的查询解析器。搜索应该首先精确(增强),然后模糊字段名称、类别、描述以及精确搜索,然后只对字段my_id进行通配符搜索。我的输入参数是qq。Solr版本是8.8.0。Solr中的配置为: <requestHandler class="solr.SearchHandler" name="/suggest"> <lst name=

我在Solr工作,负责宏扩展。我想在Solr中使用参数替换来更改查询字符串,而不需要用Java编写额外的查询解析器。搜索应该首先精确(增强),然后模糊字段名称、类别、描述以及精确搜索,然后只对字段my_id进行通配符搜索。我的输入参数是qq。Solr版本是8.8.0。Solr中的配置为:

 <requestHandler class="solr.SearchHandler" name="/suggest">
     <lst name="defaults">
        <str name="defType">edismax</str>
        <int name="rows">12</int>
        <str name="q.op">AND</str>
        <str name="df">name</str>
        <str name="qf">name^2 category description^0.1</str>
        <str name="pf">name^2 category description^0.1</str>
        <str name="ps">5</str> 
        <str name="tie">0.8</str> 
        <str name="stopwords">true</str>
        <str name="exactQuery">$${qq}^1000</str>
        <str name="fuzzyQuery">$${qq}~$${precision}</str>
        <str name="wildcardQuery">$${qq} OR *$${qq}*</str>
        <str name="precision">0.7</str>
        <str name="q">$${exactQuery} OR $${fuzzyQuery} OR my_id:$${wildcardQuery}</str>
    </lst>
    <arr name="components">
        <str>query</str>
    </arr>
</requestHandler>

埃迪斯马克斯
12
及
名称
名称^2类别说明^0.1
名称^2类别说明^0.1
5.
0.8
真的
$${qq}^1000
$${qq}~$${precision}
$${qq}或*$${qq}*
0.7
$${exactQuery}或${fuzzyQuery}或my_id:$${wildcardQuery}
查询
字段名称、类别、说明的类型为“text\u general”


字段my_id的类型为“lowercase”:


此配置不适用于模糊短语搜索。就像没有l的“自行车Yellow”。有人能帮我吗?我做错了什么

  <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="false">
<analyzer type="index">
   <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.NGramFilterFactory" maxGramSize="20" minGramSize="3"/>
    <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
</analyzer>
<analyzer type="query">
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>       
</analyzer>
 <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
<analyzer>
  <tokenizer class="solr.KeywordTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
</analyzer>