Jquery - анализ текста в строке JSON для перекрестных ссылок при загрузке

0

У меня есть некоторые данные JSON, которые выглядят так (название, desc):

   var dreams = [
      { "keyword": "Abandon", "desc": "Difficulty framing plans..." },
      { "keyword": "Abandonment", "desc": "Your unconscious may be giving you messages..." },
      { "keyword": "Abbess", "desc": "Do you even know what an Abbess is?" },
      { "keyword": "Abbey", "desc": "Wedding or funeral?" },
      { "keyword": "Abbot", "desc": "I smell treachery!" },
      { "keyword": "Abbreviations", "desc": "WTF, IDK" },
      { "keyword": "Abdomen", "desc": "Time for a diet" }
    ]

Я использую jQuery Autocomplete, чтобы делать предложения в текстовом поле, и все работает нормально. То, что я хотел бы сделать, - разобрать описание выбранного термина и искать другие ключевые слова (заголовки) из того же источника JSON, и если я что-то нахожу, оберните совпадение по ссылке, создав внутренние гиперссылки из одного источника.

Например, если я выбрал "Abandon", и в описании было упоминание (или упоминание) "Аббатства", я бы хотел обернуть ссылку вокруг этих упоминаний.

Какой самый эффективный способ сделать это? Разбор каждого слова в описании и регулярное выражение против JSON? В конце концов, в этом списке может быть 10 000 записей. Я должен сделать это на стороне клиента для демонстрации; возможно, позже я смогу перейти на node.js, чтобы сделать его серверной частью более эффективно, но на данный момент он должен работать в jQuery.

  • 0
    Есть несколько библиотек JS для fuzzy search
  • 0
    Я посмотрел на list.js и fuse.js, но не могу понять, как я могу применить их в этой ситуации. Мне интересно, если мне нужно сделать что-то вроде: var str = description.split(" "); $(str).each(function(){ /*look up description in JSON and do something if found*/ }); но я думаю, что это может быть ужасно неэффективный подход ...: /
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Хорошо, так что, если это полезно для всех, я закончил использование Julian Shapiro отличным blast.js(http://julian.com/research/blast/) и собрал простое демо, используя следующий код (сохраняя тот же JSON данные выше)

$.each(dreams, function(index, element) {
  if (element.value != suggestion.value) {
    $("#pageBody").blast({
      search: element.value,
      tag: 'a'
    });
  }
});

Это просто обертывает тег (еще не назначенный) вокруг любых совпадений, которые он находит. Мне пришлось добавить некоторые ключевые слова в описания, чтобы он мог что-то найти, но он работает и очень быстро.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню