2013-03-13 36 views
1

在solr中,我必須在我的數據庫'name'字段中獲得uniqque值。如何使Solr不區分'John'和'JOHN'

因爲這個原因我也讀到了分組和我得到期望的結果

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":16, 
    "params":{ 
     "indent":"true", 
     "q":"name:И*", 
     "group.field":"name", 
     "group":"true", 
     "wt":"json"}}, 
    "grouped":{ 
    "name":{ 
     "matches":2231, 
     "groups":[{ 
      "groupValue":"ИВАН", 
      "doclist":{"numFound":1144,"start":0,"docs":[ 
       { 
       "obshtina":"ПЛОВДИВ", 
       "phone":"032/670309", 
       "timestamp":"2013-03-04T08:43:53.553Z"}] 
      }}, 
     { 
      "groupValue":"ИЛИЯ", 
      "doclist":{"numFound":177,"start":0,"docs":[ 
       { 
       "obshtina":"БРЕЗОВО", 
       "phone":"(3191)2265", 
       .............................. 

的問題是,現在我注意到,不幸的是我有2組,這實際上是相同的「Иван」和「ИВАН '。問題是我的'名稱'字段應該是字符串類型,所以我可以使用通配符,我需要所以我不能讓它的文本爲例,並使用LowerCase過濾器

+0

你能索引兩個字段(使用複製域),並使用LowerCase過濾器不區分大小寫嗎? – 2013-03-13 07:14:20

+0

我不想那麼做! – 2013-03-13 07:26:24

回答

2

添加到以前的答案中,您可以使用新的Solr文本類型,如下所示。在索引時,只需將值作爲單個標記以小寫形式存儲。搜索時只需將搜索文本視爲小寫的單個標記。您因此可以獲得理想的效果。

 <fieldType name="lcase" 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> 
相關問題