我在jetty-6.1-SNAPSHOT下使用示例服務器的Solr 3.5.0。我已經開始用默認schema.xml中,刪除默認<field>
定義,並指定我自己的,其中包括:Solr:字段沒有丟失時「缺少必填字段」錯誤?
<field name="content" type="text_general" indexed="false" stored="false" required="true" />**
<field name="title" type="text_general" indexed="false" stored="true" required="true" />
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
我已經進行索引設置爲false,content
場,因爲我想使用這個字段在模式中稍後的copyField定義中。並且我將存儲集設置爲false,因爲我不需要在查詢結果中看到這個content
字段。
模式中的後來,我有這些copyFields定義:
<copyField source="title" dest="text"/>
<copyField source="content" dest="text"/>
這是我的數據樣本:
<add>
<doc>
<field name="id">2-29-56</field>
<field name="title">This is a test</field>
<field name="content">This is some content</field>
</doc>
</add>
我使用運行這個模式的例子Solr的服務器:
C:\solr\example>java -jar start.jar
然後我嘗試將此示例文檔發送到我的Solr服務器:
C:\solr\example\exampledocs>java -jar post.jar test.xml
這是我得到的結果:
SimplePostTool: version 1.4
SimplePostTool: POSTing files to http://localhost:8983/solr/update..
SimplePostTool: POSTing file test.xml
SimplePostTool: FATAL: Solr returned an error #400 [doc=2-29-56] missing required field: content
我嘗試了很多不同的東西,但如果我更改架構,使索引=「真」爲content
字段定義,它的工作原理。或者,如果我把它放回false並設置stored =「true」,那麼它也可以。如果索引和存儲設置爲false,它總是失敗。
如果我沒有定義使用內容字段的copyField,這將會有意義。樣本模式的意見,即使狀態:
「最佳索引大小和搜索性能,設置‘索引’爲假 所有一般的文本字段,請使用copyField將其複製到 包羅萬象的‘文本’字段,使用它進行搜索。「
那麼最有效的方法是做正確的方法是什麼?
有道理,謝謝! – 2012-03-17 16:42:48