我有一個基本的SOLR實例SOLR返回空的查詢,但沒有一個真正的查詢文檔
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="my-solr" version="1.5">
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" indexed="true" />
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" indexed="true"/>
</types>
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
</fields>
<uniqueKey>id</uniqueKey>
</schema>
如果我發出從Solr管理頁面空查詢,我得到的一些結果:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
<lst name="params">
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">*:*</str>
<str name="version">2.2</str>
<str name="rows">10</str>
</lst>
</lst>
<result name="response" numFound="5" start="0">
<doc><str name="id">1</str><arr name="title"><str>Test</str></arr></doc>
<doc><str name="id">2</str><arr name="title"><str>Other Test</str></arr></doc>
</result>
</response>
但是,如果我發出查詢title:"test"
(糾正我,如果我有錯誤的語法),我什麼也沒有得到。
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">title:"test"</str>
<str name="version">2.2</str>
<str name="rows">10</str>
</lst>
</lst>
<result name="response" numFound="0" start="0"/>
</response>
幫助!
就我所知,每個字段都被編入索引。我在架構中犯了錯誤嗎?我刪除數據並重新開始每一項變更。我會嘗試使用單個值,但是我會希望在其他字段的某個點使用多值。 – Joe
很難說如果你不在模式中發佈你的字段配置。但是,當然,如果你使用了錯誤的類型/工廠,它不會找到任何東西。 – kbeyer
多值與否是每個字段的配置。爲了保持結構清潔,我建議只將它用於實際上是數組的字段。如果文檔有兩個標題,則可能是錯誤的,並且您想要收到錯誤消息。然而,多個類別是完全可能的。 索引反正你有兩種可能性: 1)把一切都變成一個場的copytext和使用標準解析器 2)把一切都變成多張田用的copytext(以及例如不同的戰略),並使用edismax分析器與重點。 .. – kbeyer