2012-11-29 90 views
3

我有一個fieldType定義如下。現在,我已經定義了這個字段類型的字段'Sta​​tusCode',它包含了像A或P這樣的單個字符。我使用這個字段類型對數據進行了索引,並且當我運行一個類似StatusCode的查詢時:A不會返回任何結果。有人可以解釋爲什麼查詢不適用於單字符字段嗎?Solr查詢單個字符

<fieldType name="text_exact_fuzzy" class="solr.TextField" omitNorms="false"> 
     <analyzer type="index"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
      <filter class="solr.StandardFilterFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/>   
     </analyzer> 
    </fieldType> 
+1

'a'是一個典型的停用詞,所以我希望它通常不會被索引。但是,如果搜索'p'不能得到結果,那麼其他事情正在發生。 – femtoRgon

+0

它也發生在所有不是A的單個字符上。不知道我在這裏做錯了什麼。 – Ravi

+0

status_Code字段的模式定義是什麼。 ?它被索引爲真嗎? – Jayendra

回答

3

將StatusCode這樣的字段定義爲text_exact_fuzzy和這些分析器似乎很奇怪。

改爲使用簡單的StrField,而不進行任何分析(如果需要,只需要一個小寫的過濾器工廠),並且您應該獲得預期的匹配。

+0

謝謝!將狀態碼更改爲「字符串」fieldType工作。我瞭解text_exact_fuzzy中定義的分析器對單字符字段沒有意義。但我仍然不明白爲什麼在這種情況下使用這些分析器會導致查詢失敗(如果他們使用多個字符的話,那麼爲什麼不使用單個字符?)。 – Ravi

+0

它們被設計爲以不同的方式處理文本,可能最終沒有任何結果。您可以通過在調試模式下運行查詢來檢查此問題(使用管理界面)。 – MatsLindh

0

首先,我會建議你建立這樣的查詢:(好讓打電話給你的字段,它包含您的單個字符測試這個例子)

查詢= TEST:P和試驗:

你有什麼結果嗎?