将ContextField添加到SOLR suggester
我尝试在SOLR suggester中使用contextField(运行SOLR 7) 但是当我尝试构建建议时,我得到了一个错误 原因:java.lang.IllegalArgumentException:文档在field=“exacttext”(其UTF8编码长度超过最大长度32766)中至少包含一个巨大的术语,所有这些术语都被跳过。请更正分析器,使其不产生此类术语。第一个词的前缀是 但是,在我的整个设置中没有名为将ContextField添加到SOLR suggester,solr,solr7,Solr,Solr7,我尝试在SOLR suggester中使用contextField(运行SOLR 7) 但是当我尝试构建建议时,我得到了一个错误 原因:java.lang.IllegalArgumentException:文档在field=“exacttext”(其UTF8编码长度超过最大长度32766)中至少包含一个巨大的术语,所有这些术语都被跳过。请更正分析器,使其不产生此类术语。第一个词的前缀是 但是,在我的整个设置中没有名为exacttext的字段 当我使用FreeTextLookupFactory时,
exacttext
的字段
当我使用FreeTextLookupFactory时,这不会发生,但是我当然不能使用contextField
我试着加上
<filter class="solr.LengthFilterFactory" min="2" max="32700"/>
以及
<filter class="solr.TruncateTokenFilterFactory" prefixLength="100"/>
到托管模式,但这也不起作用
以下是我尝试使用的searchComponent:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">AnalyzingInfixLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">suggestText</str>
<str name="highlight">false</str>
<str name="storeDir">mySuggester</str>
<str name="separator"> </str>
<str name="suggestAnalyzerFieldType">suggestField</str>
<str name="buildOnCommit">false</str>
<str name="buildOnStartup">false</str>
<str name="contextField">context_field</str>
</lst>
</searchComponent>
我的建议者
解析固定查找工厂
文档字典工厂
建议文本
假的
我的建议者
暗示场
假的
假的
上下文字段
这是托管架构中建议者的配置:
<fieldType name="suggestField" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" catenateWords="1" generateNumberParts="0" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.LengthFilterFactory" min="2" max="32700"/>
<filter class="solr.TruncateTokenFilterFactory" prefixLength="100"/>
</analyzer>
</fieldType>
--田野的部分---
您可能需要完全删除索引,并在进行这些更改后重新编制索引-您可能只需重新编制索引,然后发出优化命令(或者,如果您真幸运的话,只需发出优化命令,即可正确重写索引,而不必删除已删除文档中的旧字段)。谢谢Mats。实际上我已经试过重新编制索引了。但可能我没有应用正确的更改(尝试/错误太多)。我再试试,你可以参考
<field name="ID" type="text_general" indexed="true" stored="true"/>
<field name="TITLE" type="tokenized" indexed="true" stored="true"/>
<field name="ANRISS" type="tokenized" indexed="true" stored="true"/>
<field name="LEAD" type="tokenized" indexed="true" stored="true"/>
<field name="BODY" type="tokenized" indexed="true" stored="true"/>
<field name="PDFDOC" type="text_general" indexed="true" stored="true"/>
<field name="MAGID" type="text_general" indexed="true" stored="true"/>
<field name="MAGNAME" type="text_general" indexed="true" stored="true"/>
<field name="MAGISSUE" type="text_general" indexed="true" stored="true"/>
<field name="ARTICLETYPE" type="text_general" indexed="true" stored="true"/>
<field name="IS_FREE" type="text_general" indexed="true" stored="true" />
<field name="THEMA" type="text_general" indexed="true" stored="true"/>
<field name="CREATIONDATE" type="pdate" indexed="true" stored="true"/>
<field name="LASTUPDATE" type="pdate" indexed="true" stored="true"/>
<copyField source="TITLE" dest="fulltext" />
<copyField source="ANRISS" dest="fulltext" />
<copyField source="LEAD" dest="fulltext" />
<copyField source="BODY" dest="fulltext" />
<field name="fulltext" stored="true" type="tokenized" multiValued="true" indexed="true" />
<copyField source="TITLE" dest="suggestText" />
<copyField source="ANRISS" dest="suggestText" />
<copyField source="LEAD" dest="suggestText" />
<copyField source="BODY" dest="suggestText" />
<field name="suggestText" stored="true" type="text_general" multiValued="true" indexed="true" />
<copyField source="MAGID" dest="context_field" />
<copyField source="ARTICLETYPE" dest="context_field" />
<field name="context_field" stored="true" type="suggestField" multiValued="true" indexed="true" />