2016-04-20 19 views
0

Ich bin nicht in der Lage kein Ergebnis zu finden, wenn Aufruf Abfrage wie folgt aus:Solr dismax Abfrage gibt keine Daten, während Standardabfrage funktioniert

http://localhost:8983/solr/somecore/select?q=title:king&wt=json&defType=dismax

Aber Aufruf Abfrage wie folgt:

http://localhost:8983/solr/somecore/select?q=title:king&wt=json

Findet wie erwartet 9 Dokumente.

Ich versuchte verschiedene Dinge (wie zum Beispiel qildcard: :, vergeblich).

Wenn jemand mich auf ein Problem oder eine Dokumentation hinweisen könnte, die mir erklären könnte, was ich falsch mache.

Wenn es Fragen gibt, schema.xml sich wie folgt:

<?xml version="1.0" encoding="UTF-8" ?> 
<schema name="example" version="0.1"> 
<types> 
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0" /> 
    <fieldType name="bool" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> 
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" /> 
    <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0" /> 
    <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0" /> 
    <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate" /> 
    <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/> 
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="random" class="solr.RandomSortField" /> 
    <fieldType name="binary" class="solr.BinaryField" /> 

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
     <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
     <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
     </analyzer> 
    </fieldType> 
</types> 

<fields> 
    <!-- required --> 
    <field name="uid" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="doc_type" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="title" type="text" indexed="true" stored="true" required="true" multiValued="false" termVectors="true" /> 

    <!-- optionals --> 
    <field name="status" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="created_at" type="tdate" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="updated_at" type="tdate" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="tags" type="string" indexed="true" stored="true" required="false" multiValued="true" /> 
    <field name="body" type="text" indexed="false" stored="true" required="false" multiValued="false" termVectors="false" /> 
    <field name="is_active" type="bool" indexed="true" stored="true" required="false" multiValued="false" /> 

    <!-- dynamic fields: they get a dyn_ prefix, then a type, then a wildcard --> 
    <dynamicField name="dyn_text_*" type="text" indexed="true" stored="true" multiValued="false" /> 
    <dynamicField name="dyn_string_*" type="string" indexed="true" stored="true" multiValued="false" /> 
    <dynamicField name="dyn_bool_*" type="bool" indexed="true" stored="true" multiValued="false" /> 
    <dynamicField name="dyn_int_*" type="int" indexed="true" stored="true" multiValued="false" /> 

    <field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/> 
</fields> 

<uniqueKey>uid</uniqueKey> 
<defaultSearchField>title</defaultSearchField> 
<solrQueryParser defaultOperator="OR"/> 
</schema> 
+0

können Sie dies bitte https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser –

+0

http: // localhost: 8983/solr/gq/auswählen? DefType = dismax & q = König –

+0

Ich lese dieses Dokument und ich versuchte diese Abfrage (durch Auslassung Schlüsselwort), noch Ergebnismenge ist leer. – Drachenfels

Antwort

0

Got Lösung aus irgendeinem mir unbekannten Grund, q = König ist nicht zur Arbeit gehen, wenn wir nicht, welches Feld definieren sollte zum Filtern verwendet werden, in meinem Fall:

http://localhost:8983/solr/somecore/select?q=king&wt=json&defType=dismax&qf=title+body 

PS

natürlich "title:" sollte auch weggelassen werden. Ich habe es in der ursprünglichen Frage nicht erwähnt, aber ich habe mit und ohne es in der Abfrage versucht.

+0

Ich vermute, Ihr Problem war, dass Sie kein Feld * title * hatten, so dass dies das Problem verursachte. Versuchen Sie nur diesen Schritt, indem Sie "title:" selbst entfernen. –

+0

Es gibt/war Feldtitel. Ich habe die Abfrage mit 'title:' entfernt, was ich in einem der Kommentare erwähnt habe. Die Antwort ist wie oben erwähnt. & qf param ist essentiell und muss vorhanden sein. – Drachenfels