flexsearch icon indicating copy to clipboard operation
flexsearch copied to clipboard

I have a question about how the results are sorted

Open mtrucc opened this issue 11 months ago • 0 comments

const { Index } = require("flexsearch");

const data1 = [
  "你家里生的和你用银子买的,都必须受割礼。这样,我的约就立在你们肉体上作永远的约。", // 0
  "你若不肯容他们去,我必使青蛙糟蹋你的四境。", // 1
  "你们要吃无酵饼七日。头一日要把酵从你们各家中除去;因为从头一日起,到第七日为止,凡吃有酵之饼的,必从以色列中剪除。", // 2
  "你要在山的四围给百姓定界限,说:‘你们当谨慎,不可上山去,也不可摸山的边界;凡摸这山的,必要治死他。", // 3
  "你们要侍奉耶和华你们的 神,他必赐福与你的粮与你的水,也必从你们中间除去疾病。", // 4
  "你要对他们说:你们世世代代的后裔,凡身上有污秽、亲近以色列人所分别为圣、归耶和华圣物的,那人必在我面前剪除。我是耶和华。", // 5
  "你们要追赶仇敌,他们必倒在你们刀下。", // 6
  "你们五个人要追赶一百人,一百人要追赶一万人;仇敌必倒在你们刀下。", // 7
  "你们剩下的人必因自己的罪孽和祖宗的罪孽在仇敌之地消灭。", // 8
  "你若和我们同去,将来耶和华有什么好处待我们,我们也必以什么好处待你。”", // 9
  "你们要在这日守为圣安息日,世世代代作为永远的定例。", // 10
  "你们必晓得真理,真理必叫你们得以自由。”", // 11
];

var index = new Index({
  encode: (str) => str.split(""),
});

for (let i = 0; i < data1.length; i++) {
  index.add(i, data1[i]);
}

console.log(`你`, index.search("你", { suggest: true }));
console.log(`你们`, index.search("你们", { suggest: true }));
console.log(`你们必`, index.search("你们必", { suggest: true }));
console.log(`你们必`, index.search("你们必晓得", { suggest: true }));

return

你 [0, 1, 2, 3, 4, 5,  6, 7, 8, 9, 10, 11]
你们 [ 0,  1, 2, 3, 4, 5,  6, 7, 8, 9, 10, 11]
你们必 [ 0,  1, 2, 3, 4, 5,  6, 7, 8, 9, 11, 10]
你们必晓得 [ 11,  0, 1, 2, 3, 4,  5, 6, 7, 8, 9, 10]

But the result I expect is

你 [0, 1, 2, 3, 4, 5,  6, 7, 8, 9, 10, 11]
你们 [ 2, 4, 6, 7, 8, 9, 10, 11, 0, 1, 3, 5]
你们必 [ 11, 2, 4, 6, 7, 8, 9, 10, 0, 1, 3, 5]
你们必晓得 [ 11, 2, 4, 6, 7, 8, 9, 10, 0, 1, 3, 5]

I think when searching 你们必

"你们必晓得真理,真理必叫你们得以自由。”", // 11`

should be first

what should I do?

mtrucc avatar Mar 06 '24 05:03 mtrucc