2013-05-08 130 views
0

我有一個使用SOLR數據庫的PHP應用程序。 問題出現時,我做了/項請求(terms docSolr搜索條件

所以文檔的自己感興趣的部分我們是

poi: "Bistriţa", 
... 
text: [ 
"ddt", 
"Numeric", 
"/14/Gagaga 2/11/Economics/17/datenow", 
"/20/Daniel_same/11/Economics/17/datenow", 
"0/Gagaga 2", 
"1/Gagaga 2/Economics", 
"2/Gagaga 2/Economics/datenow", 
"0/Daniel_same", 
"1/Daniel_same/Economics", 
"2/Daniel_same/Economics/datenow", 
"ppla", 
"seat of a first-order administrative division", 
"/19/Daniel_same/1071/Plurinational State of Bolivia/2269/Cuba/2272/Bistriţa", 
"0/Daniel_same", 
"1/Daniel_same/Plurinational State of Bolivia", 
"2/Daniel_same/Plurinational State of Bolivia/Cuba", 
"3/Daniel_same/Plurinational State of Bolivia/Cuba/Bistriţa", 
"0/Undefined_activity", 
"Year", 
"0/1999", 
"0/1999", 
"Measured", 
"", 
"utf8" 
], 

,請求將

http://localhost:8080/solr/terms 
?wt=json 
&indent=true 
&terms.sort=count 
&terms.mincount=1 
&terms.limit=10 
&terms.regex.flag=case_insensitive 
&terms.regex=.*bi.* 
&terms.fl=text 

的響應

{ 
    responseHeader: { 
     status: 0, 
     QTime: 4 
    }, 
    terms: { 
     text: [ 
      "bistriå", 
      16 
     ] 
    } 
} 

結果的問題是結果文本被截斷。我期待的是「BistriÅ£a」,這是一個城市Bistrița的UTF-8編碼。 但結果似乎被截斷在特殊字符。

奇怪的是,如果我做的字段名稱,而不是「文本」,「興趣點」的要求,我得到一個正確的響應

http://localhost:8080/solr/terms 
?wt=json 
&indent=true 
&terms.sort=count 
&terms.mincount=1 
&terms.limit=10 
&terms.regex.flag=case_insensitive 
&terms.regex=.*bi.* 
&terms.fl=poi 

{ 
    responseHeader: { 
     status: 0, 
     QTime: 4 
    }, 
    terms: { 
     text: [ 
      "Bistriţa", 
      16 
     ] 
    } 
} 

所以這個詞不被截斷。

2字段之間的最大區別在於類型。 Poi有一個字符串類型和文本有一個text_general類型。 text_general類型在此模式中定義如下

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <!-- in this example, we will only use synonyms at query time 
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
    --> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

如果提問,我可以提供更多詳細信息。不知道我現在可以添加什麼,而不是太多地膨脹這個問題。

回答