Улучшение поисковой базы
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
const InpxParser = require('./InpxParser');
|
const InpxParser = require('./InpxParser');
|
||||||
const utils = require('./utils');
|
const utils = require('./utils');
|
||||||
|
|
||||||
|
const emptyFieldValue = '@';
|
||||||
|
|
||||||
class DbCreator {
|
class DbCreator {
|
||||||
constructor(config) {
|
constructor(config) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
@@ -44,7 +46,7 @@ class DbCreator {
|
|||||||
|
|
||||||
const splitAuthor = (author) => {
|
const splitAuthor = (author) => {
|
||||||
if (!author) {
|
if (!author) {
|
||||||
author = 'Автор не указан';
|
author = emptyFieldValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const result = author.split(',');
|
const result = author.split(',');
|
||||||
@@ -89,7 +91,7 @@ class DbCreator {
|
|||||||
//это нужно для того, чтобы имя автора начиналось с заглавной
|
//это нужно для того, чтобы имя автора начиналось с заглавной
|
||||||
if (a[0].toUpperCase() === a[0])
|
if (a[0].toUpperCase() === a[0])
|
||||||
authorRec.author = a;
|
authorRec.author = a;
|
||||||
|
|
||||||
//ссылки на книги
|
//ссылки на книги
|
||||||
authorRec.bookId.push(id);
|
authorRec.bookId.push(id);
|
||||||
}
|
}
|
||||||
@@ -127,22 +129,23 @@ class DbCreator {
|
|||||||
|
|
||||||
//теперь можно создавать остальные поисковые таблицы
|
//теперь можно создавать остальные поисковые таблицы
|
||||||
const parseField = (fieldValue, fieldMap, fieldArr, authorIds) => {
|
const parseField = (fieldValue, fieldMap, fieldArr, authorIds) => {
|
||||||
if (fieldValue) {
|
if (!fieldValue)
|
||||||
const value = fieldValue.toLowerCase();
|
fieldValue = emptyFieldValue;
|
||||||
|
|
||||||
let fieldRec;
|
const value = fieldValue.toLowerCase();
|
||||||
if (fieldMap.has(value)) {
|
|
||||||
const fieldId = fieldMap.get(value);
|
|
||||||
fieldRec = fieldArr[fieldId];
|
|
||||||
} else {
|
|
||||||
fieldRec = {id: fieldArr.length, value, authorId: new Set()};
|
|
||||||
fieldArr.push(fieldRec);
|
|
||||||
fieldMap.set(value, fieldRec.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const id of authorIds) {
|
let fieldRec;
|
||||||
fieldRec.authorId.add(id);
|
if (fieldMap.has(value)) {
|
||||||
}
|
const fieldId = fieldMap.get(value);
|
||||||
|
fieldRec = fieldArr[fieldId];
|
||||||
|
} else {
|
||||||
|
fieldRec = {id: fieldArr.length, value, authorId: new Set()};
|
||||||
|
fieldArr.push(fieldRec);
|
||||||
|
fieldMap.set(value, fieldRec.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const id of authorIds) {
|
||||||
|
fieldRec.authorId.add(id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -165,23 +168,24 @@ class DbCreator {
|
|||||||
parseField(rec.title, titleMap, titleArr, authorIds);
|
parseField(rec.title, titleMap, titleArr, authorIds);
|
||||||
|
|
||||||
//жанры
|
//жанры
|
||||||
if (rec.genre) {
|
if (!rec.genre)
|
||||||
const genre = rec.genre.split(',');
|
rec.genre = emptyFieldValue;
|
||||||
|
|
||||||
for (const g of genre) {
|
const genre = rec.genre.split(',');
|
||||||
let genreRec;
|
|
||||||
if (genreMap.has(g)) {
|
|
||||||
const genreId = genreMap.get(g);
|
|
||||||
genreRec = genreArr[genreId];
|
|
||||||
} else {
|
|
||||||
genreRec = {id: genreArr.length, value: g, authorId: new Set()};
|
|
||||||
genreArr.push(genreRec);
|
|
||||||
genreMap.set(g, genreRec.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const id of authorIds) {
|
for (const g of genre) {
|
||||||
genreRec.authorId.add(id);
|
let genreRec;
|
||||||
}
|
if (genreMap.has(g)) {
|
||||||
|
const genreId = genreMap.get(g);
|
||||||
|
genreRec = genreArr[genreId];
|
||||||
|
} else {
|
||||||
|
genreRec = {id: genreArr.length, value: g, authorId: new Set()};
|
||||||
|
genreArr.push(genreRec);
|
||||||
|
genreMap.set(g, genreRec.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const id of authorIds) {
|
||||||
|
genreRec.authorId.add(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user