繁体   English   中英

Solr - solr.TextField上的精确匹配

[英]Solr - Exact Match on solr.TextField

是否有可行的方法在词干全文字段上进行完全匹配搜索? 我有一个场景,我需要一个字段进行索引和搜索,无论使用何种情况或空格。 即使在索引和查询上都使用KeywordTokenizerFactory,基于完全匹​​配的所有搜索都停止工作。 有没有办法像字符串字段一样搜索完全匹配,同时使用适用于该字段的海关标记符? 我在下面发布了我目前使用的架构:

<field name="subtipoimovel" type="buscalimpaquery" indexed="true" stored="true" />

<fieldType name="buscalimpaquery" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PatternReplaceFilterFactory" pattern=" " replacement="-"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
      </analyzer>

问候,西尔维奥朱利安尼

问题是在索引时使用的是KeywordTokenizerFactory,ASCIIFoldingFilterFactory,LowerCaseFilterFactory和PatternReplaceFilterFactory,但在查询时使用的是KeywordTokenizerFactory。 这对于完全匹配不会有效。 您需要将这些视为流水线处理器。 您还需要在查询时间内进行“类似”处理。

正如Srikanth在评论中指出的那样,你应该考虑在两个不同的领域中分割不同类型的术语分析。 另请参阅我对函数类似问题的回答: Solr:结合EdgeNGramFilterFactory和NGramFilterFactory

显然问题是这个标记器:

“solr.KeywordTokenizerFactory”

我将其更改为StandardTokenizerFactory,现在它可以完全匹配。

我在solr wiki上阅读了KeywordTokenizerFactory的描述,在我看来,为了完全匹配,我应该使用它而不是StandardTokenizerFactory。

有谁知道为什么会这样?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM