Как установить параметры fuse.js - PullRequest
0 голосов
/ 28 августа 2018

const JSON = [
  {
    "name": "01,02"
  },
  {
    "name": "01"
  },
  {
    "name": "05"
  },
  {
    "name": "06,09"
  },
  {
    "name": "04,05"
  },
  {
    "name": "02,03"
  },
  {
    "name": "02,04,05"
  },
  {
    "name": "01,02"
  },
  {
    "name": "01,03"
  }
]


function foo (str) {
  const options = {
    keys: ['name'],
    threshold: 0,
    location: 0,
    distance: 100,
    minMatchCharLength: str.length
  }
  const _fuse = new Fuse(JSON, options)
  console.log(_fuse.search(str))
}

foo('03')
<script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/3.2.1/fuse.min.js"></script>

Я пытаюсь использовать fuse.js для фильтрации. Я не уверен, как использовать параметры. Если я ищу с 03, я не возвращаю никаких результатов. Я попытался изменить местоположение и порог, но не полностью понял это. Я установил minMatchCharLength на длину строки запроса, полагая, что запрос 01 не сможет возвращать элементы, содержащие только 0. Это правильно?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Ваш код уже в порядке. Вы устанавливаете порог на 0, что означает

fuse requires a perfct match (of both letters and location)

И нет name свойства, которое точно 03.

Так что, если вы возьмете просто порог и установите, например, 0.2 - вы получите некоторые результаты поиска:

[{name: "02,03"}, {name: "01,03"}]
0 голосов
/ 29 августа 2018

попробуйте изменить "name" на name:

const JSON =  [
  {
    name: "01,02"
  },
  {
    name: "01"
  },
  {
    name: "05"
  },
  {
    name: "06,09"
  },
  {
    name: "04,05"
  },
  {
    name: "02,03"
  },
  {
    name: "02,04,05"
  },
  {
    name: "01,02"
  },
  {
    name: "01,03"
  }
];

Здесь вы можете найти демонстрацию, которая позволяет вам «играть» с конфигурациями. Вы можете вставить свой JSON и попытаться получить разные результаты: Ссылка

Для получения дополнительной информации о конфигурации вы можете обратиться к шагу 2 предыдущей ссылки, которая объясняет все параметры. Например: threshold : В какой момент алгоритм совпадения сдается. Порог 0,0 требует идеального соответствия (как букв, так и местоположения), порог 1,0 будет соответствовать чему угодно

Вот пример с вашим примером: jsfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...