2017-08-23 90 views
0

我已經使用solr 6.5創建了新的Rest API。請看以下步驟 1.自定義搜索處理器與查詢參數Solr Rest API問題 - Java

<requestHandler name="/select" class="com.test.solr.TestSearchHandler" default="true"> 
<lst name="defaults"> 
    <str name="wt">json</str> 
    <str name="indent">true</str> 
    <str name="fl">test1,test2</str> 
    <str name="df">acSearch</str> 
    <str name="sort">score desc</str> 
</lst> 
<arr name="components"> 
    <str>query</str> 
</arr> 

自定義類有以下impmenetaion

private ModifiableSolrParams createNewSolrParams(SolrQueryRequest request) { 
    SolrParams oldParams = request.getParams(); 
    ModifiableSolrParams newParams = new ModifiableSolrParams(oldParams); 
    setUpQueryExpression(newParams, oldParams); 
    return newParams; 
} 


private void setUpQueryExpression(ModifiableSolrParams newParams, SolrParams oldParams) { 
    String query = oldParams.get("query"); 
    newParams.remove("query"); 
    newParams.set(CommonParams.Q, query); 
} 

它下面的網址我得到響應

http://localhost:8330/autocomplete-service/core_autocomplete/select?query=test1:Airport工作*

但不適合以下網址

http://localhost:8330/nghp-autocomplete-service/nghp_autocomplete/select?query=Airport *

工作如何避免在查詢

鍵值對工作查詢=測試1:機場* 所需查詢=機場*

搜索正在發生的詞不適用於短語。 示例機場正在搜索印度機場正在運行。

請讓我知道如何解決。

+0

您還應該發佈您的自定義搜索處理程序'TestSearchHandler'的來源 – freedev

+0

我也建議改善您的問題,因爲不清楚您的目標是什麼 – freedev

+0

機場數據的外觀如何?您是否嘗試過像Airpor *這樣的查詢? –

回答

0

根據您的請求處理程序,你默認查詢設置acSearch:

<str name="df">acSearch</str>

處理程序將只考慮與該領域的搜索。我會完全擺脫這一行,以便您的請求處理程序將具有全文搜索能力。

+0

刪除 acSearch動態字段也不起作用。全文搜索沒有發生。它搜索單詞而不是句子。 – user5773508

+0

所以問題是當你搜索:q =機場*你只能得到有機場的文件,而不是有機場短語的文件? (前機場印度) – Ryan

+0

是的...我沒有得到適當的價值 – user5773508