我有一个solr 4.10.2核心,我正在升级到8.1.1。
当我比较parsedquery的搜索4.10 vs 8.1.1时,我看到了用同义词包装的查询(同义词(在8.1.1中。
我认为这可能是因为我用同义词filterfactory替换了不倒变的同义词factory。
这是同义词filterfactory的新功能吗?我该如何删除(或我应该?(?
4.10.2
"querystring":"IDX_Company:blue",
"parsedquery":"(IDX_Company:b IDX_Company:bl IDX_Company:blu IDX_Company:blue)",
...
8.1.1
"querystring":"IDX_Company:blue",
"parsedquery":"SynonymQuery(Synonym(IDX_Company:b IDX_Company:bl IDX_Company:blu IDX_Company:blue))",
...
这是字段def:
<field name="Company" type="string" indexed="true" stored="true"/>
<field name="IDX_Company" type="text_general" indexed="true" stored="false" multiValued="true" />
<copyField source="Company" dest="IDX_Company"/>
这是我在schema.xml中使用的text_general的定义
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15"/> <!-- RDH - removed side="front"-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- RDH SynonymFilterFactory has been deprecated, replace with SynonymGraphFilterFactory -->
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<!-- RDH https://lucene.apache.org/solr/guide/8_1/filter-descriptions.html
Flatten Graph Filter
This filter must be included on INDEX-time analyzer specifications that include at least one graph-aware filter, including Synonym Graph Filter and Word Delimiter Graph Filter.
-->
<filter class="solr.FlattenGraphFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!-- strip all punctuation -->
<filter class="solr.PatternReplaceFilterFactory" pattern="[^p{L}p{N} ]" replacement=" " replace="all" /> <!-- RDH -->
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15"/> <!-- RDH - removed side="front"-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- RDH SynonymFilterFactory is deprecated, replace with SynonymGraphFilterFactory -->
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<!-- RDH https://lucene.apache.org/solr/guide/8_1/filter-descriptions.html
Flatten Graph Filter
This filter must be included on INDEX-time analyzer specifications that include at least one graph-aware filter, including Synonym Graph Filter and Word Delimiter Graph Filter.
-->
<filter class="solr.FlattenGraphFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!-- strip all punctuation -->
<filter class="solr.PatternReplaceFilterFactory" pattern="[^p{L}p{N} ]" replacement=" " replace="all" /> <!-- RDH -->
</analyzer>
</fieldType>
如果您是指blue => b, bl, blu, blue
的扩展,则是由于您在text_general的架构中的 EdgeNGramFilterFactory
造成的。
但是,您在解析的查询中看到的SynonymQuery
是由SynonymGraphFilterFactory
引起的,尽管同义词扩展确实没有发生,因为您可能没有同义词中 blue .txt文件。
您只需删除与架构中的同义词filterFactory关联的filter
,如果您完全不需要同义词。