2012-01-16 19 views
4

我使用的是solr 3.5並添加了一個自定義字段,它通過在schema.xml中定義以下內容將類別添加到文檔中。在solr中禁用小寫字段的小寫字段

<field name="category" type="string" indexed="true" stored="true"/> 

現在我正在實現一個Search-Web-Client,它應該顯示該類別字段的所有索引值。我這樣做,用下面的查詢:

facet=true&facet.field=category&q=* 

結果如下所示:

<response> 
<lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">45</int> 
    <lst name="params"> 
    <str name="facet.field">category</str> 
    <str name="q">*</str> 
    <str name="facet">true</str> 
    </lst> 
</lst> 
<result name="response" numFound="0" start="0" maxScore="0.0"/> 
    <lst name="facet_counts"> 
    <lst name="facet_queries"/> 
    <lst name="facet_fields"> 
    <lst name="category"> 
    <int name="category1">0</int> 
    <int name="category2">0</int> 
    <int name="category3">0</int> 
    <int name="category4">0</int> 
    <int name="category5">0</int> 
    </lst> 
</lst> 
<lst name="facet_dates"/> 
    <lst name="facet_ranges"/> 
    </lst> 
</response> 

我的Web客戶端顯示類別中的所有名字,但都寫在小寫的,而是存儲在索引與大寫字母。

<response> 
<result> 
    <doc> 
    ... 
    <str name="category">Category1</str> 
    ... 
    </doc> 
</result> 
</response> 
  • 解決方案一:是否有可能迫使小值名稱是區分大小寫?
  • 解決方案b:是否有另一個查詢會給索引中存儲的每個類別的值?
+1

能否請您發表您的字符串的字段類型定義在'schema.xml'?這不是默認的,對嗎? – javanna 2012-01-16 16:43:18

+0

感謝您的幫助,它是默認定義。但我需要重新編制我的網站。 – jpee 2012-01-17 09:20:00

+0

太棒了,很高興你解決了! – javanna 2012-01-17 09:22:17

回答

11

我懷疑你的LowerCaseFilterFactory用於你的string類型的字段。在這種情況下,索引值爲category1,但存儲的值仍然是您提交的原始文件Category1

您應該從您的schema.xml中的string fieldType定義中刪除LowerCaseFilterFactory以具有所需的分面行爲。

事實上,這是常見的使用與簡單的字段類型方面的具體copyField,沒有TokenizerFilter

+0

感謝您的回答。我將text_general(具有LowerCaseFilterFactory)的類型更改爲字符串。字符串沒有這樣的過濾器。我忘了刪除索引並重新編制我的網頁。之後,一切正常。 – jpee 2012-01-17 09:17:02

相關問題