是否存在可用於使用撇號搜索執行部分字符串匹配搜索的設置(或代碼段)?例如:搜索「藍色」應該返回標題爲「Learning Management Blueprint」的項目。搜索部分字符串
Q
搜索部分字符串
1
A
回答
0
你知道我撇在P'unk大道的首席開發人員。
你的解決方案確實有效,但是一個嚴重的問題是你不會逃避用戶的輸入,以防止像.
和*
這樣的正則表達式元字符被解釋爲這樣。爲此,您可以使用apos.utils.regExpQuote(s)
,它將通過\
返回帶有危險字符的字符串。
有一個更好的方法來做到這一點,但只是使用req.query.autocomplete
來代替。撇號有一個內置的autocomplete
光標過濾器,其工作方式與search
過濾器不同。 autocomplete
過濾器允許部分匹配(儘管僅在單詞的開頭),然後它通過常規的search
提供它找到的單詞,以便結果仍按匹配質量排序。它還保持使用search
的許多性能優勢。
像你這樣的正則表達式搜索將會掃描整個mongodb集合(至少是所有相關類型的文檔),這意味着如果有很多內容,就會出現性能問題。
autocomplete
的一個注意事項是,它只能「看到」標題,標籤等高優先級字段中的單詞。它不像正則表達式搜索(或過濾器)可以看到文檔的全文。這是保持性能的必要權衡。
0
看起來像添加RegExp是需要的。如果任何人需要這個,這裏是有關的lib \模塊\撇號搜索\ index.js代碼:
module.exports = {
perPage: 15,
construct: function(self, options) {
self.indexPage = function(req, callback) {
req.query.search = req.query.search || req.query.q;
var allowedTypes;
var defaultingToAll = false;
var cursor = self.apos.docs.find(req, { lowSearchText: new RegExp(req.query.search, 'i') })
.perPage(self.perPage);
if (self.filters) {
var filterTypes = _.filter(
_.pluck(self.filters, 'name'),
function(name) {
return name !== '__else';
}
);
相關問題
- 1. 搜索部分字符串PHP
- 2. VBA練成部分字符串搜索
- 3. NSComparisonResult搜索部分字符串?
- 4. 在C++中部分字符串搜索
- 5. sql server部分字符串搜索
- 6. C字符串搜索獲取字符串的一部分
- 7. 在PHP中搜索字符串或字符串的一部分
- 8. TSql字符串搜索模仿部分字符串確切和部分不
- 9. 用部分搜索字符串搜索聯繫人
- 10. Drupal的搜索模塊可以搜索子字符串嗎? (部分搜索)
- 11. 搜索字符串w /分隔符
- 12. 如何搜索字符串的一部分,不是全部
- 13. 全部或部分字符串 - 搜索功能
- 14. 搜索字符串
- 15. 字符串搜索
- 16. 搜索字符串
- 17. 搜索字符串
- 18. 搜索字符串
- 19. 搜索字符串
- 20. 字符串搜索
- 21. 搜索字符串
- 22. 搜索字符串
- 23. 搜索字符串
- 24. 字符串搜索
- 25. 搜索字符串
- 26. 搜索子字符串並在Perl中存儲字符串的另一部分
- 27. 使粗體字符串的一部分與搜索字符串匹配
- 28. 搜索並替換mssql表中的部分字符串/子字符串
- 29. 如何在javascript中搜索整個字符串中的一部分字符串
- 30. 搜索分隔字符串列
在我的測試,搜索的 「藍色」 部分串的工作原理: VAR光標= self.apos.docs.find(REQ, { lowSearchText:/藍/ } ) 但使該可變沒有。這不應該等同,並工作? var searchText ='blue'; var cursor = self.apos.docs.find(req, { lowSearchText:searchText } ) –