Skip to content
Snippets Groups Projects
Commit 67afe968 authored by syuilo's avatar syuilo
Browse files

wip

parent 46367688
No related branches found
No related tags found
No related merge requests found
......@@ -35,29 +35,16 @@
"bio": {
"type": "string",
"index": "analyzed",
"analyzer": "kuromoji"
"analyzer": "bigram"
}
}
},
"post": {
"note": {
"properties": {
"text": {
"type": "string",
"index": "analyzed",
"analyzer": "kuromoji"
}
}
},
"drive_file": {
"properties": {
"name": {
"type": "string",
"index": "analyzed",
"analyzer": "kuromoji"
},
"user": {
"type": "string",
"index": "not_analyzed"
"analyzer": "bigram"
}
}
}
......
......@@ -34,7 +34,6 @@ export type Source = {
pass: string;
};
elasticsearch: {
enable: boolean;
host: string;
port: number;
pass: string;
......
......@@ -19,7 +19,7 @@ import MachineInfo from './utils/machineInfo';
import DependencyInfo from './utils/dependencyInfo';
import serverStats from './daemons/server-stats';
import notesStats from './daemons/notes-stats';
import db from './db/mongodb';
import loadConfig from './config/load';
import { Config } from './config/types';
......@@ -204,4 +204,6 @@ process.on('uncaughtException', err => {
// Dying away...
process.on('exit', code => {
Logger.info(`The process is going exit (${code})`);
db.close();
});
import $ from 'cafy';
import * as mongo from 'mongodb';
import Note from '../../../../models/note';
import { ILocalUser } from '../../../../models/user';
import { pack } from '../../../../models/note';
import es from '../../../../db/elasticsearch';
module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'query' parameter
const [query, queryError] = $.str.get(params.query);
if (queryError) return rej('invalid query param');
// Get 'offset' parameter
const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
if (offsetErr) return rej('invalid offset param');
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 30).get(params.limit);
if (limitErr) return rej('invalid limit param');
es.search({
index: 'misskey',
type: 'note',
body: {
size: limit,
from: offset,
query: {
simple_query_string: {
fields: ['text'],
query: query,
default_operator: 'and'
}
},
sort: [
{ _doc: 'desc' }
]
}
}, async (error, response) => {
if (error) {
console.error(error);
return res(500);
}
if (response.hits.total === 0) {
return res([]);
}
const hits = response.hits.hits.map(hit => new mongo.ObjectID(hit._id));
// Fetch found notes
const notes = await Note.find({
_id: {
$in: hits
}
}, {
sort: {
_id: -1
}
});
res(await Promise.all(notes.map(note => pack(note, me))));
});
});
......@@ -18,6 +18,7 @@ import { IApp } from '../../models/app';
import UserList from '../../models/user-list';
import resolveUser from '../../remote/resolve-user';
import Meta from '../../models/meta';
import config from '../../config';
type Type = 'reply' | 'renote' | 'quote' | 'mention';
......@@ -366,7 +367,7 @@ export default async (user: IUser, data: {
watch(user._id, data.reply);
}
// (自分自身へのリプライでない限りは)通知を作成
// 通知
nm.push(data.reply.userId, 'reply');
}
......@@ -427,4 +428,18 @@ export default async (user: IUser, data: {
});
}
}
// Register to search database
if (note.text && config.elasticsearch) {
const es = require('../../../db/elasticsearch');
es.index({
index: 'misskey',
type: 'note',
id: note._id.toString(),
body: {
text: note.text
}
});
}
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment