1. 程式人生 > >解決搜尋結果排序問題

解決搜尋結果排序問題

一、定位方法所在:
通過前臺頁面查詢後臺對應方法

(1)訪問專案網站,右擊頁面“審查元素”,審查network->XHR,接著測試需要的模組,如圖我在搜尋框中輸入 “剁椒魚頭” ,根據名字就大致可以判斷 呼叫的是“fetchAllRestaurants”。

(2)需要注意的是,由於是action層跟前端進行接觸的,所以這裡的“fetchAllRestaurants”對應的是action層,並且與方法上面的@action註解後面的value值對應。

這裡寫圖片描述

這裡雖然@action下的方法名也叫fetchAllRestaurants,但全屬巧合。
注:我們知道寫搜尋的模組是action->customer->mobile->RestaurantSearch,所以在RestaurantSearch中按住ctrl+f調出檔案內搜尋“fetchAllRestaurants”即可找到對應的方法。

(3)areaId = areaService.getLocalName().getId();

restaurantService.allRestaurantsForIndex(areaId, latitude, longitude, dishTypeId, isCut, orderTypeFlag, name);

接下來就需要找到是呼叫的哪個service層(實現業務邏輯)方法來實現相應功能的,以上兩個程式碼段是action方法中呼叫了service的部分,第一個是為了得到地區id,第二個是通過已有引數返回所有餐館(我們想要的搜尋結果就是餐館),所以能夠定位到,是service層ResraurantService的allRestaurantsForIndex方法完成這部分功能。
注:把滑鼠移到“allRestaurantsForIndex”上,按住ctrl加左鍵,即可對應到相應的service層介面,點選左側“I”圖示,即可找到相應的service層實現類。
action


介面這裡寫圖片描述

二、更改目的碼:
allRestaurantsForIndex的程式碼中出現switch,裡面分為case1,case2,case3,default。想要知道是哪一種情況,打上斷點再去執行搜尋結果模組即可,最後程式跳入了default,那麼可以判定,我們要做更改的部分就只有如下程式碼:

這裡寫圖片描述

在返回餐館過程中,這部分程式碼已經執行了查詢綜合評分,但是最終沒有實現排序,原因在於前端未能利用這部分資料進行排序操作。所以我們可以在後端進行排序,以下是加上的程式碼片段實現排序。
這裡寫圖片描述

註解:Comparator是個介面,可重寫compare()和equals()兩種方法,用於比較。如果為null的話,就是使用元素的預設排序。
compare(a,b)方法:根據第一個引數小於、等於或大於第二個引數分別返回-1,0或1
equals(obi)方法:僅當指定的物件也是一個Cpmparator,並且強行實施與此Comparetor相同的排序才返回true。
Collections.sort(list, new Comparator());的第二個引數就相當於一個標誌,告訴sort方法按什麼順序來對list進行排序。
compareTo() 方法用於將 Number 物件與方法的引數進行比較。可用於比較 Byte, Long, Integer等。
如果指定的數與引數相等返回0。
如果指定的數小於引數返回 -1。
如果指定的數大於引數返回 1。

相關推薦

解決搜尋結果排序問題

一、定位方法所在: (1)訪問專案網站,右擊頁面“審查元素”,審查network->XHR,接著測試需要的模組,如圖我在搜尋框中輸入 “剁椒魚頭” ,根據名字就大致可以判斷 呼叫的是“fetchAllRestaurants”。 (2)需要

谷歌怎樣給搜尋結果排序

PageRank的數學模型 不同於之前的訪問量統計,PageRank 求解了這樣一個問題:一個人在網路上瀏覽網頁,每看過一個網頁之後就會隨機點選網頁上的連結訪問新的網頁。如果當前這個人瀏覽的網頁 x 已經確定,那麼網頁 x 上每個連結被點選的概率也是確定的,可以用向量 Nx 表示。在這種條件下,這個人點選了

分散式搜尋elasticsearch 搜尋結果排序不一致性問題

想象這一種情況,如果搜尋結果中得分出現相同的情況下:由於搜尋會在分片的副本之間均衡的輪詢請求,可能會出現請求在不同的副本之間返回的循序不同,從而影響排序結果的穩定性。 搜尋介面有提供preference引數:curl localhost:9200/_search?prefe

織夢手機站搜尋結果顯示為電腦站的搜尋結果模板的解決方法

有使用dedecms最新程式移動版的同學肯定遇到過,手機版搜尋結果跳轉到的是電腦版搜尋結果頁面去了。 解決方法 1、在移動站模板的搜尋框程式碼上加入 <input type="hidden" name="mobile" value="1" /> <form name="formsea

ElasticSearch最佳入門實踐(五十二)定製搜尋結果排序規則

1、預設排序規則 預設情況下,是按照_score降序排序的 然而,某些情況下,可能沒有有用的_score,比如說filter GET /_search { "query" : { "bool" : { "filter

搜尋結果按匹配欄位進行排序

談到搜尋,一般就想起了SQL Server的FullTextSearch(全文搜尋)功能,它確實強大,但使用起來也要做一些較為繁瑣的準備工作,一般小型的專案或者對搜尋要求(包括效能需求)不是很高的情況下實用它還是有點太重型了。簡單的搜尋用SQL查詢即可,但一般面

通過Function Score Query優化Elasticsearch搜尋結果(綜合排序)

在使用 Elasticsearch 進行全文搜尋時,搜尋結果預設會以文件的相關度進行排序,如果想要改變預設的排序規則,也可以通過sort指定一個或多個排序欄位。 但是使用sort排序過於絕對,它會直接忽略掉文件本身的相關度(根本不會去計算)。在很多時候這樣做的效果並

一招技巧解決360搜尋結果頁展示網站LOGO

  導讀:當你在搜尋引擎中搜索一個關鍵詞的時候,搜尋結果頁會以不同的方式呈現,有的展示LOGO,有的展示一張圖片,有的只顯示標題與描述,這三者之間效果不用多說,對於企業網路營銷幫助最大的展示方式,當然是LOGO展示,直觀展示企業資訊,不僅利於提升使用者點選,還利於推廣企業

solr搜尋結果按某欄位排序

如果想要搜尋結果按某一field排序, 而相同的field情況下匹配度高的優先 1) 使用sort 可見使用sort排序只滿足將section=3的排在前面, 但是同樣都是section為3的不符合按相似度排序 2) 應該對排序欄位加權才是正解

ES:定製搜尋結果排序規則

1、預設排序規則 預設情況下,是按照_score降序排序的 GET /_search { "query": { "bool": { "filter": { "term": { "author_id":

Magento網站搜尋結果過多-搜尋不準確的問題問題的解決

步驟如下: 找到app/design/frontend/default/default/template/catalogsearch/form.mini.phtml 程式碼如 <form id="search_mini_form" action=

解決 googel 無法直接跳轉網頁開啟搜尋結果

Google 是個我用得最多的搜尋引擎, 非常好用, 但因為某些原因, 在中國大陸地區表現很差. 我相信經常用谷歌搜尋的人會遇到過這樣的問題: 在 Google 搜尋結果頁面點選一些連結後出現網路錯誤. 這裡要介紹一下 Google 重定向的作用, 帶來的問題

對檢索結果排序

檢索結果排序1、按單列排序select 列名 from 表名 order by 列名;2、按多列排序select 列名1,列名2,列名3 from 表名 order by 列名1,列名2;備註:如果列名1有多項重復,那麽就不會按照列名2排序,只有列名1都是唯一,才會按照列名2排序。3、按列位置排序selec

織夢搜尋結果為空時輸出自定義提示資訊

開啟 search.htm 搜尋結果模板檔案,把你的分頁條標籤,例如 {dede:pagelist listsize=4} 改成 {dede:pagelist listsize=4 runphp=yes} @me = (strpos(@me,'0條') ? "<p style='color:#f0

如何實現按照計算後的結果排序

在做分組報表統計時,我們經常會被要求按照資料升序或降序排序。在 group 函式的引數中,我們可以指定分組後對組的排序表示式,這樣報表展現時能夠直接根據該表示式進行排序了。我們先來看一個簡單的例子,如下圖所示: 其中,A1 表示式為:=ds1.group(貨主地區, 貨主地區!=null;

Lintcode 搜尋插入位置/搜尋旋轉排序陣列插入位置

問題1 搜尋插入位置 給定一個排序陣列和一個目標值,如果在陣列中找到目標值則返回索引。如果沒有,返回到它將會被按順序插入的位置。 你可以假設在陣列中無重複元素。 樣例 [1,3,5,6],5 → 2 [1,3,5,6],2 → 1 [1,3,5,6], 7 → 4 [

LeetCode-33 search-in-rotated-sorted-array 搜尋旋轉排序陣列

題目連結 https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ 題意         對於一個升序排序的陣列,從某個位置截斷,然後直接拼在後面。看題目給的例子,還是比較

[Swift]LeetCode81. 搜尋旋轉排序陣列 II | Search in Rotated Sorted Array II

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,0,1,2,2,5,6] might become [2,5,6,0

mysql 下 計算 兩點 經緯度 之間的距離 計算結果排序

就是 大致 整數 最大值 資源 order 技術 得到 padding 根據經緯度計算距離公式 公式 對上面的公式解釋如下: Lung1 Lat1表示A點經緯度, Lung2 Lat2表示B點經緯度; a=Lat1 – Lat2 為兩

leet33. 搜尋旋轉排序陣列

題目: 假設按照升序排序的陣列在預先未知的某個關鍵點上旋轉。 (即 0 1 2 4 5 6 7 將變成 4 5 6 7 0 1 2)。 給你一個目標值來搜尋,如果陣列中存在這個數則返回它的索引,否則返回 -1。 你可以假設陣列中不存在重複。 分析: 可