作者:Opera2502896761 | 来源:互联网 | 2023-05-19 19:04
精简版:
有谁知道Soln5的EdgeNGramFilterFactory是否发生了什么事?它曾经在solr 4上正常工作,但我刚刚升级到solr5并且使用此过滤器的具有此字段的内核拒绝加载...
很长的故事:
此配置曾用于solr4.10(schema.xml):
和文档说我这样做是正确的(如果没有明确提到它是solr4或solr5).
但是,当我尝试使用此配置添加集合时,它失败并显示以下消息:
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}
我删除了side=front
"未知"参数,从头开始,它工作 - 意味着没有更多的错误.
因此,虽然它曾经用于solr4而没有任何额外的改变,但对于solr5它不再有效.有什么改变了?我是否错过了有关此过滤器的任何文档?我需要加载任何额外的库来使其工作?
最后,如果上面的意思是这样的(bug/feature/what) - 是否有任何解决方法,以便拥有这个"side-substring"索引功能,而不必在我添加文档时生成值Solr的?
更新:使用"黑客"架构(即没有side=front
),我索引文档并更改PP
要存储的字段.当我搜索时,它看起来像索引整个值.例如,因为NAME:ELEPHANT
,我发现PP:ELEPHANT
......
1> cheffe..:
该属性side
已在版本4.4 中的LUCENE-3907中删除.现在,此过滤器的行为就像您放弃了一样side="front"
.因此,您可以删除该属性并且没问题,因为您正在使用"前端".
正如您可以阅读链接的Lucene问题的对话
如果你需要反向n-gram,你可以随后添加一个过滤器来做到这一点.在此过滤器中无需将此作为单独的逻辑.我们应该分割逻辑并尽可能简化过滤器.
这就是已经完成的事情.side属性已从过滤器中删除.
这已经在Lucene完成,而不是直接在Solr中完成.由于Lucene是一个Java-API,因此在过滤器的Java Doc中已经提到过它
从Lucene 4.4开始,此过滤器不支持EdgeNGramTokenFilter.Side.BACK(您可以使用ReverseStringFilter预先和之后获得相同的行为),正确处理补充字符并且不再更新偏移量.
这可能是您在Solr文档中找不到相关内容的原因.但Lucene的变更日志中也提到了这种变化.