我使用MeteorJS與MongoDB相關聯來創建一個全文搜索功能,我所做的是我按照這裏的步驟:http://meteorpedia.com/read/Fulltext_search,我的搜索功能現在有點「工作」了。MeteorJS - MongoDB - 爲什麼全文搜索只返回完全匹配?
下面是我的一些重要代碼:
服務器/拉鍊index.js文件:
Meteor.startup(function() {
var search_index_name = 'my_search_index';
// Remove old indexes as you can only have one text index and if you add
// more fields to your index then you will need to recreate it.
Zips._dropIndex(search_index_name);
Zips._ensureIndex({
city: 'text',
state: 'text'
}, {
name: 'my_search_index'
});
});
服務器/ lib目錄/文件search_zips.js
var _searchZips = function (searchText) {
var Future = Npm.require('fibers/future');
var future = new Future();
MongoInternals.defaultRemoteCollectionDriver().mongo.db.executeDbCommand({
text: 'zips',
search: searchText,
project: {
id: 1 // Only return the ids
}
}
, function(error, results) {
if (results && results.documents[0].ok === 1) {
var x = results.documents[0].results;
future.return(x);
}
else {
future.return('');
}
});
return future.wait();
};
現在的問題是:說,我有一個文件name = Washington, state = DC
。
然後,當我提交搜索key =「Washington」時,它將返回所有文檔與name = Washington
;但當我提交搜索鍵=「洗」只,它什麼也沒有返回!
因此,我懷疑MongoDB的全文搜索要求搜索關鍵字與文檔的字段值完全相同?你們能幫我改進我的搜索功能嗎,以便它仍然使用MongoDB的全文搜索,但是如果我提交了完整的搜索關鍵字,它能夠返回文檔事件嗎?
我一直在這玩幾個小時。希望你們能幫忙。非常感謝您的高級!