gpt4 book ai didi

plugins - solr5 中的 EdgeNGramFilterFactory 更改

转载 作者:行者123 更新时间:2023-12-02 07:08:48 24 4
gpt4 key购买 nike

简短版本:

有谁知道 solr5 的 EdgeNGramFilterFactory 是否发生了什么事?它曾经在 solr 4 上运行良好,但我刚刚升级到 solr5,并且使用此过滤器具有此字段的核心拒绝加载...

长话短说:

此配置曾经在 solr4.10 (schema.xml) 中工作:

<field name="NAME" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="PP" type="text_prefix" indexed="true" stored="false" required="false" multiValued="false"/>

<copyField source="NAME" dest="PP">

<fieldType name="text_prefix" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>

还有documentation说我做对了(没有明确提及是否适用于 solr4 或 solr5)。

但是,当我尝试使用此配置添加集合时,它失败并显示以下消息:

<lst name="failure">
<str>
org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:Error from server at http://localhost:8983/solr: Error CREATEing SolrCore 'test_collection': Unable to create core [test_collection] Caused by: Unknown parameters: {side=front}</str>
</lst>

我删除了side=front“未知”参数,从头开始并且它起作用了 - 意味着不再有错误。

因此,虽然它过去适用于 solr4,无需任何额外更改,但对于 solr5,它不再适用。有什么改变吗?我错过了有关此过滤器的任何文档吗?我需要加载任何额外的库才能完成这项工作吗?

最后,如果上面的内容是这样的(错误/功能/任何) - 是否有任何解决方法,以便拥有这种“侧子字符串”索引功能,而无需我在生成值时生成值向 solr 添加文档?

更新:使用“黑客”架构(即没有 side=front),我对文档建立了索引并将 PP 字段更改为被存储。当我搜索时,看起来它索引了整个值。例如,对于 NAME:ELEPHANT,我发现 PP:ELEPHANT ...

最佳答案

该属性side has been removedLUCENE-3907 的背景下在 4.4 版本中。现在,此过滤器的行为始终就像您在 side="front" 中给出的那样。因此,您只需删除该属性就可以了,因为您正在“前端”使用它。

正如您在链接的 Lucene 问题的对话中所读到的那样

If you need reverse n-grams, you could always add a filter to do that afterwards. There is no need to have this as separate logic in this filter. We should split logic and keep filters as simple as possible.

这就是已经完成的事情。 side 属性已从过滤器中删除。

这是在 Lucene 中完成的,而不是直接在 Solr 中完成的。由于 Lucene 是一个 Java-API,因此已被提及 in the Java Doc of the filter

As of Lucene 4.4, this filter does not support EdgeNGramTokenFilter.Side.BACK (you can use ReverseStringFilter up-front and afterward to get the same behavior), handles supplementary characters correctly and does not update offsets anymore.

这可能是您在 Solr 文档中找不到任何相关文字的原因。但这个变化也被提到了in Lucene's Change Log .

关于plugins - solr5 中的 EdgeNGramFilterFactory 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28807427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com