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