2013-10-09 55 views
4

我試圖通過SolrNet庫搜索Apache Solr搜索。到目前爲止,我已經設法在我的機器上運行Solr實例,並根據特定字段進行一些查詢。 我的代碼做它看起來像這樣在Apache Solr中設置默認搜索字段

var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>(); 
    var results = solr.Query(new SolrQueryByField("id", "SP2514N")); 

這一個現在工作得很好,但我想就用了查詢指定的字段,所以,當我輸入一個搜索關鍵字的Solr將查找到可用的各個領域,並返回一個result.I已經找到了代碼,使其在SolrNet庫從here

 var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Product>>(); 
     var results = solr.Query(new SolrQuery("SP2514N")); 

但這從來沒有工作過,當我往下鑽至底部,我發現我需要設置默認搜索領域在Solr實例中,這樣Solr將在沒有其他選項被選中時搜索這些字段(這就是我對它的理解不確定這一點)。 所以我去設置Solr的默認領域,我把solrconfig.xml中和編輯它像這樣

<requestHandler name="/query" class="solr.SearchHandler" default="true"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <str name="wt">json</str> 
     <str name="indent">true</str> 
     <str name="df">text</str> 
     <str name="df">id</str> 
    </lst> 
    </requestHandler> 

[剛添加<str name="df">id</str>這一領域作爲額外]。但這也從來沒有幫助而且我堅持,任何人都可以告訴我如何正確設置Solr中的默認搜索字段?或者我還在做其他任何錯誤? I have Uploaded My Solrconfig file here

+0

另請參閱我對另一個問題的回答 http://stackoverflow.com/questions/8294337/how-can-i-search-all-field-in-solr-that-c​​ontain-the-keywords – kellyfj

回答

4

我不知道SolrNet庫,而是做一個默認的領域,你需要在schema.xml中即<defaultSearchField>FieldName</defaultSearchField>定義DefaultSearchField搜索。

你可以找到這個文件@<SOLR_HOME>\apache-solr-3.6.0\example\example-DIH\solr\testsyndrome\conf\schema.xml

我希望這是你在找什麼。

+3

默認搜索字段 解析查詢時,Solr使用來標識哪些字段名稱應該在未使用顯式字段名稱的查詢中進行搜索。最好不要使用或依賴此設置;相反,請求處理程序或查詢LocalParams的搜索應指定要搜索的默認字段。此處的設置可以省略,並且正在考慮進行棄用。 –

+0

從Solr 3.6及更高版本開始,此解決方案已不再適用。請參閱https://issues.apache。org/jira/browse/SOLR-2724 – kellyfj

+0

@OkkeKlein然後在Solr 5中使用什麼。我不希望某些mysql列在Solr中不可搜索,儘管我想存儲它們。 ed - 列'add_time' – Ankit

4

不要從SolrNet開始,請使用Solr的內置Web Admin界面。迭代直到你理解請求處理程序和參數。然後,回到SolrNet。

在你的情況,似乎你改變了默認的請求處理程序,並試圖使用df參數兩次。我會堅持原來的請求處理程序,現在只是爲了避免額外的問題。

使用df參數,您是否嘗試搜索單個字段或多個字段?如果是單個字段,則只保留一個參數值。如果有多個,則需要切換到使用eDisMax,您可以在其中提供一組字段。

同樣,管理界面可讓您嘗試使用它,然後您可以將其添加到處理程序的默認參數中。