2017-03-01 91 views
0
开头

我已将数据从我的数据库导入Solr以查询目的。Solr匹配字符串,以

数据的样本如下...

NAMATJIRA,DRIVE,,WARAMANGA,ACT 
DOUGLAS WATERHOUSE,DRIVE,,DUNLOP,ACT 
WARDELL,DRIVE,,BARDEN RIDGE,NSW 

在Solr管理页面,当我运行查询

street_name:wa* AND street_name:drive* 

我得到如上的所有记录。有没有一种方法可以过滤,以便我只能得到以WA开头的那些?

更新:添加的架构信息

<field name="street_name" type="text_general" indexed="true" stored="true"/> 
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/>  
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
+0

向我们展示您的solr模式 –

回答

1

你用它来分析该字段的类型被标记化而到这几个方面,所以

NAMATJIRA,DRIVE,,WARAMANGA,ACT 

成为(包含多个方面的字段,然后它可能也是lowercasing等)

NAMATJIRA 
DRIVE 
WARAMANGA 
ACT 

这就是为什么你的查询匹配它,因为其中一个值以'wa'开始。

要解决此问题,只需将您的字段的类型更改为使用KeywordTokenizerFactory,即将所有内容保留为一个单词。

+0

已更改为KeywordTokenizerFactory(架构信息已更新,请参阅原始问题),但结果并未改变。 – user2260040

+0

您是否重新索引?你需要 – Persimmonium

+0

reindexing做的伎俩。非常感谢。 – user2260040