ФорумПрограммированиеPHP для идиотов → Поиск с учетом расстояния между словами запроса

Поиск с учетом расстояния между словами запроса

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 12 мая 2011 г. 13:46

    Есть индекс - слова и их частоты в документах. Чем выше частоты слов запроса, тем релевантнее найденный документ. Задача - при расчете релевантности учитывать то, как далеко друг от друга эти слова в тексте.

    Пример.
    Есть запрос из двух слов:
    "a b"

    Пусть найдены два совпадения:
    1) "…a x y z b x y z a…" (3 совпадения)
    2) "…x y z a b x y z…" (2 совпадения)

    (x y z - некоторые другие слова)

    Очевидно 2-ой результат больше подходит заданному запросу (хотя совпадений меньше, но зато искомые слова рядом).
    Собственно вопрос - как это реализовать?

    Есть идея - записывать в тот же индекс пары слов, как они идут в исходных текстах документов и назначать им больший "вес". Но это какой-то топорный и не расширяемый вариант (запрос же может быть длиннее двух слов).
    Хранить позиции каждого слова? Накладно, да и запросы, наверное, получатся тяжелыми.

    В общем поделитесь идеями. Ссылки на литературу приветствуются.
  • qpayct

    Сообщения: 54 Репутация: N Группа: Адекваты

    Spritz 11 октября 2011 г. 15:20, спустя 152 дня 1 час 34 минуты

    у меня в подписи почитай там строковые функции пхп ;)
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 октября 2011 г. 17:11, спустя 1 час 50 минут 48 секунд

    Это называется релевантность
    Спустя 90 сек.
    Ой, начал читать с конца)
    Лучше не мучайся - все уже давно за тебя написано, используй готовые решения
  • Zdar

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 31 октября 2011 г. 20:05, спустя 20 дней 2 часа 53 минуты

    Если просто слова - это одно, можно регэкспами все сделать, со словоформами сложнее, учитывая морфологию русского языка
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 31 октября 2011 г. 20:40, спустя 34 минуты 50 секунд

    в mysql есть fulltext search
    а вообще sphinx вроде
    не всё полезно, что в swap полезло
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 31 октября 2011 г. 20:51, спустя 11 минут 38 секунд

    sphinx однозначно, иначе начнешь думать о смазке, как один велосипедист из соседней темы)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 1 ноября 2011 г. 8:18, спустя 11 часов 27 минут 14 секунд

    юзай SphinxQL
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 1 ноября 2011 г. 11:46, спустя 3 часа 27 минут 14 секунд

    я думаю Timur за полгода определился уже )
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!