سؤال

I have a document that looks like this:

<date name="added">2014-02-17T17:17:01Z</date>
<arr name="authorids"><str>57373</str></arr>
<str name="body">German chancellor Angela Merkel has proposed some stuff, well done her.</str>
<str name="contentid">9</str>
<arr name="countryids"><str>37,38,119</str><str/><str/></arr>
<str name="excerpt">German chancellor Angela Merkel has proposed setting upsome stuff that will do really well.</str>
<str name="key">146</str>
<str name="layoutid">1</str>
<date name="modified">2014-02-17T17:17:05Z</date>
<date name="published">2014-02-17T17:17:00Z</date>
<str name="shortcut">1</str>
<str name="sitecode">GIR</str>
<str name="statusid">5</str>
<str name="title">Merkel backs separate EU internet infrastructure</str>
<str name="uid">146</str>
<str name="url">http://127.0.0.1:84/something/123/edit/</str>

When I pass through a query param to solr of:

q=statusid:5 AND (title:"Merkel" OR body:"Merkel" OR excerpt:"Merkel") AND sitecode:GIR

which should match the above document, I get no results returned and i have no idea why. The solr documentation seems to be quite light on how to properly query solr.

my schema for the document looks like this:

 <fields>
   <field name="key"        type="string" indexed="false" stored="true" required="true" />
   <field name="url"        type="string" indexed="false" stored="true" required="false" />
   <field name="sitecode"   type="string" indexed="true" stored="true" required="true" />
   <field name="authorids"  type="string"    indexed="true"  stored="true" required="false" multiValued="true" />
   <field name="tagids"     type="string"    indexed="true"  stored="true" required="false" multiValued="true" />
   <field name="countryids" type="string"    indexed="true"  stored="true" required="false" multiValued="true" />
   <field name="modified"   type="date" indexed="true"  stored="true" required="true" />
   <field name="published"  type="date" indexed="true"  stored="true" required="true" />
   <field name="added"      type="date" indexed="true"  stored="true" required="true" />
   <field name="title"      type="text" indexed="true"  stored="true" required="true" />
   <field name="excerpt"    type="text" indexed="true"  stored="true" required="true" />
   <field name="body"       type="text" indexed="true"  stored="true" required="true" />
   <field name="layoutid"   type="string" indexed="false" stored="true" required="true" />
   <field name="shortcut"   type="string" indexed="false" stored="true" required="true" />
   <field name="statusid"   type="string" indexed="false" stored="true" required="true" />
   <field name="contentid"  type="string" indexed="false" stored="true" required="true" />
   <field name="uid"        type="string" indexed="true"  stored="true" required="true" />
 </fields>
هل كانت مفيدة؟

المحلول

Yaa. It's becasue of the statusid field. For a field if indexed="false", you can not query on it. Simply remove the statusid part from query, your query should work.

q=(title:"Merkel" OR body:"Merkel" OR excerpt:"Merkel") AND sitecode:GIR
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top