摘要:行修改加入關鍵字,為時為完全匹配,為時為包含行修改加入關鍵字,為時為完全匹配,為時為包含行修改加入關鍵字,為時為完全匹配,為時為包含行修改加入關鍵字,為時為完全匹配,為時為包含添加行修改加入關鍵字,為時為完全匹配,為時為
viewer3d.js
15194行
/** * 修改2019-8-6 加入perfectMatch關鍵字, * perfectMatch為true時為完全匹配,為false時為包含 * */ Model.prototype.search = function (text, onSuccessCallback, onErrorCallback, attributeNames,perfectMatch) { var pdb = this.getPropertyDb(); if (!pdb) { onErrorCallback && onErrorCallback(); return; } pdb.searchProperties(text, attributeNames, onSuccessCallback, onErrorCallback,perfectMatch); };
19173行
/** * 修改2019-8-6 加入perfectMatch關鍵字, * perfectMatch為true時為完全匹配,為false時為包含 * */ Viewer3D.prototype.search = function (text, onSuccessCallback, onErrorCallback, attributeNames,perfectMatch) { this.searchText = text; if (this.model) { this.model.search(text, onSuccessCallback, onErrorCallback, attributeNames,perfectMatch); } else { if (onErrorCallback) onErrorCallback(_file_loaders_net_ErrorCodes__WEBPACK_IMPORTED_MODULE_6__["ErrorCodes"].BAD_DATA, "Search failed since model does not exist"); } };
38881行
/** * 修改2019-8-6 加入perfectMatch關鍵字, * perfectMatch為true時為完全匹配,為false時為包含 * */ PropDbLoader.prototype.searchProperties = function (searchText, attributeNames, onSuccess, onError,perfectMatch) { this.asyncPropertyOperation( { "operation": WORKER_SEARCH_PROPERTIES, "searchText": searchText, "attributeNames": attributeNames, "perfectMatch":perfectMatch }, onSuccess, onError); };
lmvworker.js
35941行
/** * 修改2019-8-6 加入perfectMatch關鍵字, * perfectMatch為true時為完全匹配,為false時為包含 * @param loadContext */ function doPropertySearch(loadContext) { var _this = loadContext.worker; // 添加 var perfectMatch = loadContext.perfectMatch; var cacheEntry = _this.pdbCache && _this.pdbCache[loadContext.dbPath]; if (cacheEntry && cacheEntry.pdb) { var searchText = loadContext.searchText; var result = cacheEntry.pdb.bruteForceSearch(searchText, loadContext.attributeNames,perfectMatch); _this.postMessage({ cbId: loadContext.cbId, result: result }); } }
22754行
/** * Searches the property database for a string. * 修改2019-8-6 加入perfectMatch關鍵字, * perfectMatch為true時為完全匹配,為false時為包含 * * * @returns Array of ids. */ this.bruteForceSearch = function (searchText, attributeNames,perfectMatch) { var searchList = this.getSearchTerms(searchText); if (searchList.length === 0) return []; //For each search word, find matching IDs var results = []; for (var k = 0; k < searchList.length; k++) { var result = []; //Find all values that match the search text var matching_vals = []; for (var i = 0, iEnd = _valuesOffsets.length; i < iEnd; i++) { var val = this.getValueAt(i); if (val === null) continue; // 原方法 // if (val.toString().toLowerCase().indexOf(searchList[k]) !== -1){ // // matching_vals.push(i); // } //此處修改 if(perfectMatch){ if (val.toString().toLowerCase() === searchList[k] ){ matching_vals.push(i); } }else{ if (val.toString().toLowerCase().indexOf(searchList[k]) !== -1){ matching_vals.push(i); } } } if (matching_vals.length === 0) { results.push(result); continue; } // values should be sorted at this point, but it doesn"t hurt making sure they are. matching_vals.sort(function (a, b) { return a - b; }); this.enumObjects(function (id) { _this.enumObjectProperties(id, function (attrId, valId) { // skip hidden attributes var isHidden = _this.attributeHidden(attrId); if (isHidden) { return; } var iFound = Object(_common_SearchUtils__WEBPACK_IMPORTED_MODULE_1__["binarySearch"])(matching_vals, valId); if (iFound !== -1) { //Check attribute name in case a restriction is passed in if (attributeNames && attributeNames.length && attributeNames.indexOf(_attrs[attrId][0]) === -1) return; result.push(id); return true; } }); }); results.push(result); } if (results.length === 1) { return results[0]; } //If each search term resulted in hits, compute the intersection of the sets var map = {}; var hits = results[0]; for (var i = 0; i < hits.length; i++) { map[hits[i]] = 1;} for (var j = 1; j < results.length; j++) { hits = results[j]; var mapint = {}; for (var i = 0; i < hits.length; i++) { if (map[hits[i]] === 1) mapint[hits[i]] = 1; } map = mapint; } var result = []; for (var k in map) { result.push(parseInt(k)); } return result; };
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106456.html
摘要:到目前為止我們只實現了搜索功能,按更優的體驗來講,在搜索結果中,要優先把相連匹配的放在首位,如關鍵字,要把結果放到前面。 我們先看一下效果圖:showImg(https://segmentfault.com/img/remote/1460000015486183?w=199&h=107); 這是搜索關鍵字cfg時,會自動匹配到config方法 同樣,我們再看另一個例子 showImg(...
摘要:創建用來對查詢語句進行詞法分析和語言處理。調用對查詢語法樹進行搜索,得到結果。代碼中用到了分詞器,是第三方實現的分詞器,繼承自的類,針對中文文本進行處理的分詞器。 Lucene介紹與應用 GitHub地址:https://github.com/yizuoliang... 一、全文檢索介紹 1.數據結構 結構化數據: 指具有固定格式 或限定長度的數據; 例如:數據庫中的數據、元數據…...
摘要:基于深度學習的語義匹配語義匹配技術,在信息檢索搜索引擎中有著重要的地位,在結果召回精準排序等環節發揮著重要作用。在美團點評業務中主要起著兩方面作用。 寫在前面美團點評這兩年在深度學習方面進行了一些探索,其中在自然語言處理領域,我們將深度學習技術應用于文本分析、語義匹配、搜索引擎的排序模型等;在計算機視覺領域,我們將其應用于文字識別、目標檢測、圖像分類、圖像質量排序等。下面我們就以語義匹配、圖...
摘要:就其本身而言,是當前以及最近幾年最受歡迎的免費信息檢索程序庫。這樣完全和數據庫進行了隔離。當一個文檔出現在了搜索結果中,這就意味著該文檔與用戶給定的查詢語句是相匹配的。 showImg(https://segmentfault.com/img/bVbuifx?w=258&h=258);公眾號閱讀https://mp.weixin.qq.com/s/M3... Lucene [TOC] ...
摘要:前綴部分必須完全匹配。搜索建議搜索建議功能,需要配合程序,在向中存入文檔時,就需要通過分詞等方式,指定搜索建議字段的內容。注意,高亮的結果在返回時單獨存放,并不是將數據做了改變。的官方文檔是最好的參考資料,介紹很全面。 模糊搜索 可以進行模糊搜索: GET job/type1/_search { query:{ fuzzy:{ title:{ v...
閱讀 2131·2023-04-26 02:19
閱讀 1920·2021-11-19 09:40
閱讀 1710·2021-09-29 09:35
閱讀 3578·2021-09-29 09:34
閱讀 4315·2021-09-07 10:16
閱讀 5547·2021-08-11 11:14
閱讀 3585·2019-08-30 15:54
閱讀 1635·2019-08-30 15:53