fullText 在带有 Mlab 的 Parse Server 中不起作用
fullText is not working in Parse Server with Mlab
我 运行 parse server(2.8.4)
在 heroku 上使用 Mlab。我尝试基于单词匹配进行搜索,但全文出现错误,这是我的查询:
var query1 = new Parse.Query("SearchTerms");
query1.fullText("searchString", "programmer");
它抛出以下错误:
ParseError {
2019-11-24T03:01:42.421284+00:00 app[web.1]: code: 1,
2019-11-24T03:01:42.421285+00:00 app[web.1]: message: {
2019-11-24T03:01:42.421286+00:00 app[web.1]: name: 'MongoError',
2019-11-24T03:01:42.421287+00:00 app[web.1]: message: 'text index required for $text query',
2019-11-24T03:01:42.421288+00:00 app[web.1]: ok: 0,
2019-11-24T03:01:42.421289+00:00 app[web.1]: errmsg: 'text index required for $text query',
2019-11-24T03:01:42.421290+00:00 app[web.1]: code: 27,
2019-11-24T03:01:42.421291+00:00 app[web.1]: codeName: 'IndexNotFound',
2019-11-24T03:01:42.421292+00:00 app[web.1]: operationTime: '6762703032942592018',
2019-11-24T03:01:42.421293+00:00 app[web.1]: '$clusterTime': { clusterTime: '6762703032942592018', signature: [Object] }
2019-11-24T03:01:42.421294+00:00 app[web.1]: }
2019-11-24T03:01:42.421295+00:00 app[web.1]: }
在网上我找到了以下解决方案:
db.collection.createIndex(
{
field1: "text",
field2: "text",
etc...
}
)
但是我不知道把这段代码放在哪里。
有什么方法可以将此解决方案与 mlab
一起使用
索引问题已按照@Suat
的指南得到解决
但是新问题来了:
我正在使用 10 或使用 fullText
查询并收到此错误:
[31merror[39m: Error generating response. ParseError {
2019-11-25T08:46:46.632775+00:00 app[web.1]: code: 1,
2019-11-25T08:46:46.632776+00:00 app[web.1]: message: MongoError: Too many text expressions
2019-11-25T08:46:46.632778+00:00 app[web.1]: at queryCallback (/app/node_modules/mongodb-core/lib/cursor.js:247:25)
2019-11-25T08:46:46.632779+00:00 app[web.1]: at /app/node_modules/mongodb-core/lib/connection/pool.js:531:18
2019-11-25T08:46:46.632781+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:75:11) {
2019-11-25T08:46:46.632783+00:00 app[web.1]: name: 'MongoError',
2019-11-25T08:46:46.632784+00:00 app[web.1]: message: 'Too many text expressions',
2019-11-25T08:46:46.632785+00:00 app[web.1]: ok: 0,
2019-11-25T08:46:46.632787+00:00 app[web.1]: errmsg: 'Too many text expressions',
2019-11-25T08:46:46.632788+00:00 app[web.1]: code: 2,
2019-11-25T08:46:46.632789+00:00 app[web.1]: codeName: 'BadValue',
2019-11-25T08:46:46.632791+00:00 app[web.1]: operationTime: Timestamp { bsontype: 'Timestamp', low: 6, high_: 1574671603 },
2019-11-25T08:46:46.632792+00:00 app[web.1]: '$clusterTime': { clusterTime: [Timestamp], signature: [Object] },
2019-11-25T08:46:46.632793+00:00 app[web.1]: [Symbol(mongoErrorContextSymbol)]: {}
2019-11-25T08:46:46.632794+00:00 app[web.1]: }
您的问题主要是 MongoDB 和 mLab 特定的。
- 打开您的 mLab 控制面板
- Select 你的部署
- Select 你的数据库
- Select 你的 collection
在collection详细信息页面中,页面顶部有文档、索引、统计信息、工具。
选择 Indexes 然后点击 'Add Index' 按钮会有一个弹出屏幕,你可以输入这样的索引
{
"job": "text"
}
然后单击 'Create In Background' 按钮。几秒钟后,您的索引将被创建,现在您可以使用您的全文功能了。
但记住
Note: Full Text Search can be resource intensive. Ensure the cost of using indexes is worth the benefit, see storage requirements & performance costs of text indexes..
我 运行 parse server(2.8.4)
在 heroku 上使用 Mlab。我尝试基于单词匹配进行搜索,但全文出现错误,这是我的查询:
var query1 = new Parse.Query("SearchTerms");
query1.fullText("searchString", "programmer");
它抛出以下错误:
ParseError {
2019-11-24T03:01:42.421284+00:00 app[web.1]: code: 1,
2019-11-24T03:01:42.421285+00:00 app[web.1]: message: {
2019-11-24T03:01:42.421286+00:00 app[web.1]: name: 'MongoError',
2019-11-24T03:01:42.421287+00:00 app[web.1]: message: 'text index required for $text query',
2019-11-24T03:01:42.421288+00:00 app[web.1]: ok: 0,
2019-11-24T03:01:42.421289+00:00 app[web.1]: errmsg: 'text index required for $text query',
2019-11-24T03:01:42.421290+00:00 app[web.1]: code: 27,
2019-11-24T03:01:42.421291+00:00 app[web.1]: codeName: 'IndexNotFound',
2019-11-24T03:01:42.421292+00:00 app[web.1]: operationTime: '6762703032942592018',
2019-11-24T03:01:42.421293+00:00 app[web.1]: '$clusterTime': { clusterTime: '6762703032942592018', signature: [Object] }
2019-11-24T03:01:42.421294+00:00 app[web.1]: }
2019-11-24T03:01:42.421295+00:00 app[web.1]: }
在网上我找到了以下解决方案:
db.collection.createIndex(
{
field1: "text",
field2: "text",
etc...
}
)
但是我不知道把这段代码放在哪里。
有什么方法可以将此解决方案与 mlab
索引问题已按照@Suat
的指南得到解决但是新问题来了:
我正在使用 10 或使用 fullText
查询并收到此错误:
[31merror[39m: Error generating response. ParseError {
2019-11-25T08:46:46.632775+00:00 app[web.1]: code: 1,
2019-11-25T08:46:46.632776+00:00 app[web.1]: message: MongoError: Too many text expressions
2019-11-25T08:46:46.632778+00:00 app[web.1]: at queryCallback (/app/node_modules/mongodb-core/lib/cursor.js:247:25)
2019-11-25T08:46:46.632779+00:00 app[web.1]: at /app/node_modules/mongodb-core/lib/connection/pool.js:531:18
2019-11-25T08:46:46.632781+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:75:11) {
2019-11-25T08:46:46.632783+00:00 app[web.1]: name: 'MongoError',
2019-11-25T08:46:46.632784+00:00 app[web.1]: message: 'Too many text expressions',
2019-11-25T08:46:46.632785+00:00 app[web.1]: ok: 0,
2019-11-25T08:46:46.632787+00:00 app[web.1]: errmsg: 'Too many text expressions',
2019-11-25T08:46:46.632788+00:00 app[web.1]: code: 2,
2019-11-25T08:46:46.632789+00:00 app[web.1]: codeName: 'BadValue',
2019-11-25T08:46:46.632791+00:00 app[web.1]: operationTime: Timestamp { bsontype: 'Timestamp', low: 6, high_: 1574671603 },
2019-11-25T08:46:46.632792+00:00 app[web.1]: '$clusterTime': { clusterTime: [Timestamp], signature: [Object] },
2019-11-25T08:46:46.632793+00:00 app[web.1]: [Symbol(mongoErrorContextSymbol)]: {}
2019-11-25T08:46:46.632794+00:00 app[web.1]: }
您的问题主要是 MongoDB 和 mLab 特定的。
- 打开您的 mLab 控制面板
- Select 你的部署
- Select 你的数据库
- Select 你的 collection
在collection详细信息页面中,页面顶部有文档、索引、统计信息、工具。
选择 Indexes 然后点击 'Add Index' 按钮会有一个弹出屏幕,你可以输入这样的索引
{
"job": "text"
}
然后单击 'Create In Background' 按钮。几秒钟后,您的索引将被创建,现在您可以使用您的全文功能了。
但记住
Note: Full Text Search can be resource intensive. Ensure the cost of using indexes is worth the benefit, see storage requirements & performance costs of text indexes..