- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
简短版本:
有谁知道 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 removed在 LUCENE-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/
在 Solr (3.3) 中,是否可以通过 EdgeNGramFilterFactory 逐个字母地搜索字段?并且对短语查询也很敏感? 例如,我正在寻找一个字段,如果包含“contrat inform
在我的 solr 架构文件中,我有一个使用 EdgeNGramFilterFactory 的默认搜索字段 假设我的搜索查询是 tes 所以我得到这样的结果: tess test tesla ...
我在模式文件中使用 EdgeNGramFilterFactory 和配置
简短版本: 有谁知道 solr5 的 EdgeNGramFilterFactory 是否发生了什么事?它曾经在 solr 4 上运行良好,但我刚刚升级到 solr5,并且使用此过滤器具有此字段的核心拒
我是 Solr 的初学者。在我的项目中,NGramFilterFactory和 EdgeNGramFilterFactory ,两者都用于一个字段。我对文档的理解是 EdgeNGramFilterFa
这两个过滤器有什么区别?它们的效果好像是一样的? 任何人都可以提供如何将它们应用于某些文本的示例吗? 最佳答案 嗯,第一个提供了一个Tokenizer,第二个提供了一个Filter;-) 由于您只能拥
我有一种情况需要同时使用 EdgeNGramFilterFactory 和 NGramFilterFactory。 我正在使用 NGramFilterFactory 执行“包含”样式的搜索,最小字符数
我已经设置了 Solr,到目前为止一切都运行得很好,但现在我想将 EdgeNGram 功能添加到我的搜索中。但是,一旦我将其放入 schema.xml,它就会开始抛出错误: org.apache.so
我是一名优秀的程序员,十分优秀!