Solr 宏扩展/参数替换

时间:2021-05-05 13:14:02

标签: solr parameters macros

我正在 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>

字段名称、类别、描述的修改类型为“text_general”。

  <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>

字段 my_id 具有修改后的类型“小写”:

 <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>

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

0 个答案:

没有答案