2013-07-29 59 views
3

下面的查詢很適合我Solr的 - 設置的Fileds爲默認搜索字段

http://[]:8983/solr/vault/select?q=VersionComments%3AWhite 

返回所有的文件,其中版本註釋包括白

我試着忽略的字段名稱,並把它作爲一個如下默認值: Solr中配置我寫

<requestHandler name="/select" class="solr.SearchHandler"> 
<!-- default values for query parameters can be specified, these 
    will be overridden by parameters in the request 
    --> 
<lst name="defaults"> 
    <str name="echoParams">explicit</str> 
    <int name="rows">10</int> 
    <str name="df">PackageName</str> 
    <str name="df">Tag</str> 
    <str name="df">VersionComments</str> 
    <str name="df">VersionTag</str> 
    <str name="df">Description</str> 
    <str name="df">SKU</str> 
    <str name="df">SKUDesc</str> 
</lst> 

我重新啓動Solr的,並創建一個完整的進口。
後來我嘗試使用

http://[]:8983/solr/vault/select?q=White 

(其中

http://[]:8983/solr/vault/select?q=VersionComments%3AWhite 

仍然有效)

但我不明白的任何文件作爲答案。
我在做什麼錯?

+0

重新開放[question](http://stackoverflow.com/questions/17941259/solr-set-fileds-as-default-search-field-using-edismax)使用edismax解析器 – Jeb

回答

10

據我所知,你應該只擁有<str name="df"></str>requestHandler

聲明一次通常我做的是複製的一切,我想搜索到一個默認搜索字段的字段名爲text

schema.xml中:

<copyField source="name_t" dest="text"/> 

solrconfig.xml中

<requestHandler name="/select" class="solr.SearchHandler"> 
<!-- default values for query parameters can be specified, these 
    will be overridden by parameters in the request 
--> 
<lst name="defaults"> 
    <str name="q">*:*</str> 
    <str name="echoParams">explicit</str> 
    <int name="rows">10</int> 
    <str name="df">text</str> 
</lst> 
</requestHandler> 

如果這還不夠好,你可以隨時搜索使用dismax搜索與qf聲明像這樣等領域:

http://localhost:8983/solr/vault/select/?q= White&defType=dismax&qf=PackageName+Tag+VersionComments+VersionTag+Description+SKU+SKUDesc

+0

感謝您的回答。 1.我應該使用dismax還是edismax? 2.爲什麼我應該使用複製字段? – Jeb

+1

我使用edismax,這是dismax搜索的新標準;但這真的取決於你。使用copyFields可以讓你搜索一個字段,加快搜索速度。 – harmstyler