2012-03-29 31 views
0

我正在使用查詢從solr(4.0 SNAPSHOT)的管理頁面檢索所有結果。但它沒有顯示任何結果。我檢查了使用其他查詢,他們正在返回結果。那麼爲什麼默認查詢不起作用?調試查詢solr默認查詢*:*不是woking

solrconfig.xml中的文件

<?xml version="1.0" encoding="UTF-8" ?> 
<config> 
    <luceneMatchVersion></luceneMatchVersion> 
    <dataDir></dataDir> 
    <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/> 
    <indexDefaults> 
    <!-- Values here affect all index writers and act as a default unless overridden. --> 
    <useCompoundFile>false</useCompoundFile> 
    <mergeFactor>10</mergeFactor> 
    <ramBufferSizeMB>32</ramBufferSizeMB> 
    <maxFieldLength>10000</maxFieldLength> 
    <writeLockTimeout>1000</writeLockTimeout> 
    <commitLockTimeout>10000</commitLockTimeout> 
    <lockType>native</lockType> 
    </indexDefaults> 

    <mainIndex> 
    <useCompoundFile>false</useCompoundFile> 
    <ramBufferSizeMB>32</ramBufferSizeMB> 
    <mergeFactor>10</mergeFactor> 
    <unlockOnStartup>false</unlockOnStartup> 
    <reopenReaders>true</reopenReaders> 
    <deletionPolicy class="solr.SolrDeletionPolicy"> 
     <str name="maxCommitsToKeep">1</str> 
     <str name="maxOptimizedCommitsToKeep">0</str> 
    </deletionPolicy> 
    <infoStream file="INFOSTREAM.txt">false</infoStream> 
    </mainIndex> 

    <jmx /> 

    <updateHandler class="solr.DirectUpdateHandler2"> 
    </updateHandler> 

    <query> 
    <maxBooleanClauses>1024</maxBooleanClauses> 
    <filterCache 
     class="solr.FastLRUCache" 
     size="512" 
     initialSize="512" 
     autowarmCount="0"/> 

     <queryResultCache 
     class="solr.LRUCache" 
     size="1024" 
     initialSize="1024" 
     autowarmCount="0"/> 

    <documentCache 
     class="solr.LRUCache" 
     size="1024" 
     initialSize="1024" 
     autowarmCount="0"/> 

    <enableLazyFieldLoading>true</enableLazyFieldLoading> 
    <queryResultWindowSize>50</queryResultWindowSize> 
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached> 

    <listener event="newSearcher" class="solr.QuerySenderListener"> 
     <arr name="queries"> 
     <lst> <str name="q">lockboxweb</str> <str name="start">0</str> <str name="rows">10</str> </lst> 
     <lst> <str name="q">iskootonboarding</str> <str name="start">0</str> <str name="rows">10</str> </lst> 
     <lst><str name="q">Mac</str></lst> 
     </arr> 
    </listener> 

    <listener event="firstSearcher" class="solr.QuerySenderListener"> 
     <arr name="queries"> 
     <lst> <str name="q">LinuxTools</str><str name="start">0</str><str name="rows">10</str></lst> 
     <lst><str name="q">lookup</str></lst> 
     </arr> 
    </listener> 

    <useColdSearcher>false</useColdSearcher> 

    <maxWarmingSearchers>2</maxWarmingSearchers> 

    </query> 

    <!-- 
    Let the dispatch filter handler /select?qt=XXX 
    handleSelect=true will use consistent error handling for /select and /update 
    handleSelect=false will use solr1.1 style error formatting 
    --> 
    <requestDispatcher handleSelect="true" > 
    <!--Make sure your system has some authentication before enabling remote streaming! --> 
    <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000" /> 

    <!-- Set HTTP caching related parameters (for proxy caches and clients). 

     To get the behaviour of Solr 1.2 (ie: no caching related headers) 
     use the never304="true" option and do not specify a value for 
     <cacheControl> 
    --> 
    <!-- <httpCaching never304="true"> --> 
    <httpCaching lastModifiedFrom="openTime" etagSeed="Solr"> 
     <cacheControl>max-age=30, public</cacheControl> 
    </httpCaching> 
    </requestDispatcher> 


    <requestHandler name="standard" class="solr.SearchHandler" > 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
    </lst> 
    </requestHandler> 

    <requestHandler name="/replication" class="solr.ReplicationHandler" > 
    <lst name="master"> 
     <str name="replicateAfter">commit</str> 
     <str name="replicateAfter">startup</str> 
     <str name="confFiles">schema.xml,stopwords.txt</str> 
    </lst> 
</requestHandler> 

    <requestHandler name="dismax" class="solr.SearchHandler" default="true"> 
    <lst name="defaults"> 
    <str name="defType">dismax</str> 
    <str name="echoParams">explicit</str> 
    <float name="tie">0.01</float> 
    <!-- 
    <str name="qf"> 
     key^5.0 ng_key^4.0 description^1.5 sg_description^1.1 ng_description^1.0 ngs_description^1.0 
    </str> 
    --> 
    <str name="qf"> 
     key^5.0 dl_key^4.0 ng_key^3.5 description^1.0 sg_description^1.0 ng_description^1.0 ngs_description^1.0 
    </str> 

    <str name="fl"> 
     key,description,url,source,durl,type 
    </str> 
    <str name="mm"> 
     2&lt;-1 5&lt;-2 6&lt;90% 
    </str> 
    <int name="ps">100</int> 
    <str name="q.alt">*:*</str> 
    </lst> 
    </requestHandler> 

    <!-- A component to return terms and document frequency of those terms. --> 
    <searchComponent name="termsComponent" class="org.apache.solr.handler.component.TermsComponent"/> 

    <requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler"> 
    <lst name="defaults"> 
     <bool name="terms">true</bool> 
    </lst>  
    <arr name="components"> 
     <str>termsComponent</str> 
    </arr> 
    </requestHandler> 


    <!-- a search component that enables you to configure the top results for 
     a given query regardless of the normal lucene scoring.--> 
    <searchComponent name="elevator" class="solr.QueryElevationComponent" > 
    <!-- pick a fieldType to analyze queries --> 
    <str name="queryFieldType">string</str> 
    <str name="config-file">elevate.xml</str> 
    </searchComponent> 

    <!-- a request handler utilizing the elevator component --> 
    <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
    </lst> 
    <arr name="last-components"> 
     <str>elevator</str> 
    </arr> 
    </requestHandler> 


    <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> 
    <requestHandler name="/update/javabin" class="solr.BinaryUpdateRequestHandler" /> 
    <requestHandler name="/analysis/document" class="solr.DocumentAnalysisRequestHandler" /> 
    <requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler" /> 

    <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> 

    <!-- ping/healthcheck --> 
    <requestHandler name="/admin/ping" class="PingRequestHandler"> 
    <lst name="defaults"> 
     <str name="qt">standard</str> 
     <str name="q">solrpingquery</str> 
     <str name="echoParams">all</str> 
    </lst> 
    </requestHandler> 

    <!-- Echo the request contents back to the client --> 
    <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" > 
    <lst name="defaults"> 
    <str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' --> 
    <str name="echoHandler">true</str> 
    </lst> 
    </requestHandler> 

    <admin> 
    <defaultQuery>*:*</defaultQuery> 
    </admin> 

</config> 

輸出

<?xml version="1.0" encoding="UTF-8"?> 
<response> 

<lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">9</int> 
    <lst name="params"> 
    <str name="explainOther"/> 
    <str name="indent">on</str> 
    <str name="hl.fl"/> 
    <str name="wt"/> 
    <str name="version">2.2</str> 
    <str name="rows">10</str> 
    <str name="fl">*,score</str> 
    <str name="debugQuery">on</str> 
    <str name="start">0</str> 
    <str name="q">*:*</str> 
    <str name="qt"/> 
    <str name="fq"/> 
    </lst> 
</lst> 
<result name="response" numFound="0" start="0" maxScore="0.0"> 
</result> 
<lst name="debug"> 
    <str name="rawquerystring">*:*</str> 
    <str name="querystring">*:*</str> 
    <str name="parsedquery">(+DisjunctionMaxQuery((ng_description:*:* | ng_key:*:*^3.5 | dl_key:*:*^4.0 | description:*:* | ngs_description:*:* | key:*:*^5.0)~0.01)())/no_coord</str> 
    <str name="parsedquery_toString">+(ng_description:*:* | ng_key:*:*^3.5 | dl_key:*:*^4.0 | description:*:* | ngs_description:*:* | key:*:*^5.0)~0.01()</str> 
    <lst name="explain"/> 
    <str name="QParser">DisMaxQParser</str> 
    <null name="altquerystring"/> 
    <null name="boostfuncs"/> 
    <lst name="timing"> 
    <double name="time">8.0</double> 
    <lst name="prepare"> 
     <double name="time">4.0</double> 
     <lst name="org.apache.solr.handler.component.QueryComponent"> 
     <double name="time">3.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.FacetComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.MoreLikeThisComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.HighlightComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.StatsComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.DebugComponent"> 
     <double name="time">0.0</double> 
     </lst> 
    </lst> 
    <lst name="process"> 
     <double name="time">4.0</double> 
     <lst name="org.apache.solr.handler.component.QueryComponent"> 
     <double name="time">2.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.FacetComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.MoreLikeThisComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.HighlightComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.StatsComponent"> 
     <double name="time">0.0</double> 
     </lst> 
     <lst name="org.apache.solr.handler.component.DebugComponent"> 
     <double name="time">2.0</double> 
     </lst> 
    </lst> 
    </lst> 
</lst> 
</response> 
+0

聽起來很奇怪,你確定你已經提交了嗎? – 2012-03-29 12:01:40

+0

是的。因爲其他查詢正在工作......但*:*返回0結果。理想情況下,應該返回完整的結果列表。 – sparkle 2012-03-29 12:06:56

+0

您是否試圖使查詢解析器顯式化? (使用「q = {!lucene} *:*)」如果問題仍然存在,請向我們提供DebugComponent的輸出http://wiki.apache.org/solr/CommonQueryParameters#debugQuery – jpountz 2012-03-29 13:04:46

回答

4

你solrconfig.xml中列出了DisMax查詢分析器作爲默認值。它不能處理字段:值查詢,所以*:*也不會工作。但是,當您不指定q參數時,q.alt參數使用標準解析器。有關更多信息,請參見http://lucidworks.lucidimagination.com/display/solr/The+DisMax+Query+Parser

+0

請告訴我爲什麼字段:值查詢不起作用 – sparkle 2012-04-09 08:34:13

+0

@ user598159因爲這是DisMax查詢解析器的工作方式,正如我在答案中鏈接到的資源中所解釋的那樣。示例配置中的標準查詢解析器接受field:value查詢。 – kekkis 2012-05-07 07:34:33