- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Solr (3.3) 中,是否可以通过 EdgeNGramFilterFactory
逐个字母地搜索字段?并且对短语查询也很敏感?
例如,我正在寻找一个字段,如果包含“contrat informatique”,则会在用户键入时找到该字段:
<fieldtype name="terms" class="solr.TextField">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldtype>
[...] contr contra contrat in inf info infor inform [...]
EdgeNGramFilterFactory
之前我找不到要使用的正确过滤器标记器.
最佳答案
默认情况下,由于查询 slop 参数 = 0,精确短语搜索不起作用。
搜索短语 '"Hello World"' 它搜索具有连续位置的术语。
我希望 EdgeNGramFilter 有一个参数来控制输出定位,这看起来像一个旧的 question .
通过将 qs 参数设置为某个非常高的值(超过 ngram 之间的最大距离),您可以恢复短语。这部分解决了允许短语但不准确的排列的问题。
因此,搜索“contrat informatique”将匹配诸如“...contract disabled. Informatique...”之类的文本
支持精确我最终使用的短语查询 separate fields for ngrams .
所需步骤:
定义单独的字段类型来索引常规值和克数:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="ngrams" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="contact_ngrams" type="ngrams" indexed="true" stored="false"/>
<field name="product_ngrams" type="ngrams" indexed="true" stored="false"/>
<copyField source="contact_text" dest="contact_ngrams"/>
<copyField source="product_text" dest="product_ngrams"/>
<field name="heap_ngrams" type="ngrams" indexed="true" stored="false"/>
<copyField source="*_text" dest="heap_ngrams"/>
<lst name="appends">
<str name="qf">heap_ngrams</str>
</lst>
关于Solr:使用 EdgeNGramFilterFactory 的精确短语查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7612889/
在 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
我是一名优秀的程序员,十分优秀!