2010-06-07 81 views
1

我已經導入文檔到Solr的有從模式(多爲* _s)動態創建的領域。在後端(/ solr/admin)中,我可以看到它們存在:聚合統計信息(如術語頻率)顯示正確。它們全部列爲存儲的索引&。Solr的不搜索(動態創建的)字段

然而,它們不會出現在查詢中,甚至當我搜索在所有領域,例如:

/solr/select/?indent=on&q=myterms&fl=* 

這個問題似乎類似於SOLR not searching on certain fields,我試圖解決方案出現,後者爲:

如果你想你的標準查詢處理程序來搜索對所有的字段,你可以在你的solrconfig.xml中改變它(我隨時補充而不是修改「標準」第二查詢處理程序。在佛羅里達州字段是字段列表你要搜索,這是一個用逗號分隔的列表或*。

我對標準solrconfig.xml進行了更改,但仍然沒有任何結果。

我試圖創建一個非常簡單的文檔:

{'id':5, 'name':'foo'} 

而這個查詢將返回DOC:

/solr/select/?indent=on&q=foo&fl=* 

查詢沒有結果,整個結果看:

<response> 
− 
<lst name="responseHeader"> 
<int name="status">0</int> 
<int name="QTime">1</int> 
− 
<lst name="params"> 
<str name="echoParams">all</str> 
<str name="h1">true</str> 
<str name="defType">dismax</str> 
<str name="indent">on</str> 
<str name="start">0</str> 
<str name="q">Foo</str> 
<str name="version">2.2</str> 
<str name="rows">10</str> 
</lst> 
</lst> 
<result name="response" numFound="0" start="0"/> 
</response> 

回答

2

您的「標準」查詢處理程序的deftype是否是dismax?如果沒有,那麼它將無法工作。作爲你提供的問題的答案,你必須使用dismax來搜索多個領域。如果你不希望使用dismax,但還是要在一次許多字段進行搜索,您必須使用拷貝字段功能在索引時間收集所有你想要搜索的到一個字段,然後等領域做出這一領域的默認字段。

+0

我使用dismax,但仍然沒有得到結果。我已經用整個回覆更新了我的帖子。 – 2010-06-25 19:15:24

+0

是否在dismax配置的qf參數中列出了字段「名稱」?它必須是因爲「foo」在該字段中被索引。 – 2010-06-25 20:00:27

+0

這是 - 我的dismax配置複製在這裏:http://gist.github.com/453487 – 2010-06-25 21:36:28

0

我看你使用查詢「富」,而name值是「富」。您可能要檢查,如果你lowercase條款中去索引和查詢您的模式的字段類型,你正在使用name

2

由於您使用_s你可以複製這些領域的「文本」在solr/collection1/conf/schema.xml這樣的:

<copyField source="*_s" dest="text" maxChars="3000"/> 

這是一個微小的變化在Why do dynamic fields not act like normal fields (specifically when querying and displaying in Hue) in solr?這是解決去掉這一*_t行:

<!-- Above, multiple source fields are copied to the [text] field. 
     Another way to map multiple source fields to the same 
     destination field is to use the dynamic field syntax. 
     copyField also supports a maxChars to copy setting. --> 

<!-- <copyField source="*_t" dest="text" maxChars="3000"/> --> 

這使我的動態字段搜索有:

curl http://localhost:8983/solr/collection1/select?q=foo 

這裏是那裏的 「包羅萬象」 的text字段描述:

<!-- catchall field, containing all other searchable text fields (implemented 
    via copyField further on in this schema --> 
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/> 

又見http://wiki.apache.org/solr/SchemaXml#Copy_Fields