Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Поиск близких слов по тексту |
Автор: Ch0bits 15.7.2015, 13:01 | ||||
Здравствуйте, коллеги! Прикручиваю поиск к сайту и встала задача наглядно показывать результаты. С самим поиском проблем нет. Использую Sphinx. Но в результате нужно показать не весь текст найденного документа, а как в поисковиках, только те части, которые наиболее подходят по поисковому запросу. Sphinx умеет выдавать список с учетом морфологии, которые были учтены в документе при поиске. Умеет даже сам оборачивать их в нужный тег в тексте, но не выделять участки. Например:
Соответственно пользователь искал что-то типа: "Как мне СЛОВО1 в СЛОВО2 с СЛОВО3 над СЛОВО4?(которое не нашлось)" Использовался алгоритм BM25+Proximity Мне же нужно показать только пару отрывков исходного текста c фиксированной максимальной длиной, где поисковые слова встречаются наиболее близко друг от друга и их наиболее часто. Например:
Что-то типа кластеризации по словам и выдачи наиболее плотных групп. Ничего путного кроме переборов в голову не лезет :( А решение казалось бы должно быть очень простым. |
Автор: Ch0bits 15.7.2015, 18:55 |
Кажется я уже нашел как сделать это средствами самого Sphinx'а. Нужно использовать SELECT c функцией SNIPPET, которая делает тоже самое что BuildExcerpts, но применимо к конкретной строке результата http://sphinxsearch.com/docs/current.html#api-func-buildexcerpts |