确切的短语匹配n-gram,但没有找到结果?

时间:2012-02-23 22:53:35

标签: solr

我有一个使用Keyword Tokenizer的字段类型(整个术语是一个标记),带有小写和边缘n-gram过滤器,例如" Robert Longo"存储为" r"," ro",...," robert l"," robert lo"等等。在分析管理页面上按预期工作。

但是当我搜索" robert long" (带引号),即使这与令牌完全匹配,也没有结果。当我在没有引号的情况下进行搜索时,我的术语被预先标记化,并且它与所有" robert" s以及所有" l" s匹配,而不仅仅是" robert l"秒。我是否需要以某种方式指定通配符来告诉它该术语还有更多内容?

来自架构:

<fieldType name="edge_text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

我的目标是从我们存储的术语中返回短语匹配的内容,这些内容完全以给定的内容开头,因此完全匹配和术语顺序至关重要。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

应该可以正常工作,我可以得到结果 你可以测试具体到现场吗?如果字段名称是edge_text并且已编入索引,则可以尝试q=edge_text:"robert long"