mirror of
https://github.com/nextapps-de/flexsearch.git
synced 2025-10-01 15:46:40 +02:00
180 lines
6.3 KiB
JavaScript
180 lines
6.3 KiB
JavaScript
if(typeof module !== "undefined"){
|
|
|
|
var env = "pre";
|
|
var expect = require("chai").expect;
|
|
var FlexSearch = require("../" + (env ? "dist/": "") + "flexsearch" + (env ? "." + env : "") + ".js");
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
// Multi-Field Documents
|
|
// ------------------------------------------------------------------------
|
|
|
|
describe("Index Multi-Field Documents (ES6)", function(){
|
|
|
|
var data = [{
|
|
|
|
id: 2,
|
|
data:{
|
|
title: "Title 3",
|
|
body: "Body 3"
|
|
}
|
|
},{
|
|
id: 1,
|
|
data:{
|
|
title: "Title 2",
|
|
body: "Body 2"
|
|
}
|
|
},{
|
|
id: 0,
|
|
data:{
|
|
title: "Title 1",
|
|
body: "Body 1"
|
|
}
|
|
}];
|
|
|
|
var update = [{
|
|
|
|
id: 0,
|
|
data:{
|
|
title: "Foo 1",
|
|
body: "Bar 1"
|
|
}
|
|
},{
|
|
id: 1,
|
|
data:{
|
|
title: "Foo 2",
|
|
body: "Bar 2"
|
|
}
|
|
},{
|
|
id: 2,
|
|
data:{
|
|
title: "Foo 3",
|
|
body: "Bar 3"
|
|
}
|
|
}];
|
|
|
|
it("Should have been indexed properly (Async)", async function(){
|
|
|
|
var index = new FlexSearch({
|
|
|
|
async: true,
|
|
doc: {
|
|
id: "id",
|
|
field: [
|
|
"data:title",
|
|
"data:body"
|
|
]
|
|
}
|
|
});
|
|
|
|
await index.add(data);
|
|
|
|
if(env === ""){
|
|
|
|
expect(index.doc.index["data:title"].length).to.equal(3);
|
|
expect(index.doc.index["data:body"].length).to.equal(3);
|
|
}
|
|
|
|
expect(await index.search({field: "data:body", query: "body"})).to.have.members(data);
|
|
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
|
|
|
|
expect(await index.search({field: "data:body", query: "title"})).to.have.lengthOf(0);
|
|
expect(await index.search({field: "data:title", query: "body"})).to.have.lengthOf(0);
|
|
|
|
expect(await index.search({field: ["data:title", "data:body"], query: "body", bool: "or"})).to.have.members(data);
|
|
expect(await index.search({field: ["data:body", "data:title"], query: "title", bool: "or"})).to.have.members(data);
|
|
|
|
expect(await index.search({field: ["data:body"], query: "body"})).to.have.members(data);
|
|
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
|
|
|
|
expect(await index.search({query: "body", bool: "or"})).to.have.members(data);
|
|
expect(await index.search("title", {bool: "or"})).to.have.members(data);
|
|
|
|
expect(await index.search({field: ["data:body"], query: "body"})).to.have.members(data);
|
|
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
|
|
|
|
await index.update(update);
|
|
|
|
expect(await index.search("foo", {bool: "or"})).not.to.have.members(data);
|
|
expect(await index.search("bar", {bool: "or"})).not.to.have.members(data);
|
|
expect(await index.search("foo", {bool: "or"})).to.have.members(update);
|
|
expect(await index.search("bar", {bool: "or"})).to.have.members(update);
|
|
|
|
expect(await index.search("foo", {field: "data:title"})).not.to.have.members(data);
|
|
expect(await index.search("bar", {field: "data:body"})).not.to.have.members(data);
|
|
expect(await index.search("foo", {field: "data:title"})).to.have.members(update);
|
|
expect(await index.search("bar", {field: "data:body"})).to.have.members(update);
|
|
|
|
await index.remove(update);
|
|
|
|
if(env === ""){
|
|
|
|
expect(await index.doc.index["data:title"].length).to.equal(0);
|
|
expect(await index.doc.index["data:body"].length).to.equal(0);
|
|
}
|
|
});
|
|
|
|
it("Should have been indexed properly (Worker)", async function(){
|
|
|
|
var index = new FlexSearch({
|
|
|
|
worker: 4,
|
|
async: true,
|
|
doc: {
|
|
|
|
id: "id",
|
|
field: [
|
|
"data:title",
|
|
"data:body"
|
|
]
|
|
}
|
|
});
|
|
|
|
await index.add(data);
|
|
|
|
if(env === ""){
|
|
|
|
expect(index.doc.index["data:title"].length).to.equal(3);
|
|
expect(index.doc.index["data:body"].length).to.equal(3);
|
|
}
|
|
|
|
expect(await index.search({field: "data:body", query: "body"})).to.have.members(data);
|
|
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
|
|
|
|
expect(await index.search({field: "data:body", query: "title"})).to.have.lengthOf(0);
|
|
expect(await index.search({field: "data:title", query: "body"})).to.have.lengthOf(0);
|
|
|
|
expect(await index.search({field: ["data:title", "data:body"], query: "body", bool: "or"})).to.have.members(data);
|
|
expect(await index.search({field: ["data:body", "data:title"], query: "title", bool: "or"})).to.have.members(data);
|
|
|
|
expect(await index.search({field: ["data:body"], query: "body"})).to.have.members(data);
|
|
expect(await index.search({field: "data:title", query: "title"})).to.have.members(data);
|
|
|
|
expect(await index.search({query: "body", bool: "or"})).to.have.members(data);
|
|
expect(await index.search("title", {bool: "or"})).to.have.members(data);
|
|
|
|
expect(await index.search({query: "body", field: "data:body"})).to.have.members(data);
|
|
expect(await index.search("title", {field: "data:title"})).to.have.members(data);
|
|
|
|
await index.update(update);
|
|
|
|
expect(await index.search("foo", {bool: "or"})).not.to.have.members(data);
|
|
expect(await index.search("bar", {bool: "or"})).not.to.have.members(data);
|
|
expect(await index.search("foo", {bool: "or"})).to.have.members(update);
|
|
expect(await index.search("bar", {bool: "or"})).to.have.members(update);
|
|
|
|
expect(await index.search("foo", {field: "data:title"})).not.to.have.members(data);
|
|
expect(await index.search("bar", {field: "data:body"})).not.to.have.members(data);
|
|
expect(await index.search("foo", {field: "data:title"})).to.have.members(update);
|
|
expect(await index.search("bar", {field: "data:body"})).to.have.members(update);
|
|
|
|
await index.remove(update);
|
|
|
|
if(env === ""){
|
|
|
|
expect(await index.doc.index["data:title"].length).to.equal(0);
|
|
expect(await index.doc.index["data:body"].length).to.equal(0);
|
|
}
|
|
});
|
|
});
|