solr - 获取以usephrase开头的结果

时间:2013-09-10 11:46:21

标签: solr

我在solr中有以下文档

<doc>
  <str name="PackageName">A lot of devices on one drawing </str>
  ...

架构将PackageName定义为

<field name="PackageName" type="text_general_edge_ngram" indexed="true" stored="true" required="true"/>

其中

<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
    </analyzer>
</fieldType>

现在,我想设置一个用户查询

的查询
 http://...:8983/solr/vault/select?q=PackageName:"A lot"

它会返回

 http://...:8983/solr/vault/select?q=PackageName:"B lot"

不会回来 和

目前

 http://...:8983/solr/vault/select?q=PackageName:B lot

 http://...:8983/solr/vault/select?q=PackageName:A lot  

重新调整文档,并用“在两种情况下都不会返回任何内容来包围它。” 如何更改查询?
感谢。

1 个答案:

答案 0 :(得分:1)

EdgeNGramFilterFactory将删除小于为minGramSize定义的大小的标记,在您的情况下定义为2。检查JIRA
此外,当您查询packageName:"A Lot"时,会在字段packageName上搜索搜索字词 但是,当您搜索packageName:A Lot时,Solr会搜索packageName:a defaultField:lot,这似乎与您的情况相符。