+11
Completed

Улучшить возможности поиска

Anton Volkov 8 years ago • updated by Vladimir Mullagaliyev (co-founder) 7 years ago 19
1. по точному вхождению

2. в различных падежах/временах

3. синонимы

4. Реал-тайм поиск (при задержке в 0,5 сек - запрос по текущему вводу)

5. Suggestions - сократит количество повторов и ошибок в написании

6. В приоритете искать по заголовку, потом по описанию, потом по комментам (комменты наполняют идею кейвордами, что облегчает поиск)

Answer

Answer
Completed
Здравствуйте.
В данный момент поиск выполняется следующим образом:

Индексация:
Индексируются тексты с заголовка и описания фидбэка, слова нормализуются стеммером (набором правил формообразования слов, для каждого языка свой).

Поиск:
Строка поиска разбивается на слова, слова нормализуются стеммером. Выполняется поиск индексов слов по полному совпадению нормализованного слова. Выбираются все фидбаки, где встретилось хотя бы 1 слово (максимум 10 фидбаков) и вверх поднимаются те, где совпадение слов больше.

Что планируем поэкспериментировать:
Попробовать поиск индексов слов по части слова (неполное совпадение).

Остальное давайте обсуждать в комментах.
По предложениям в фидбэке:

1. Слова проверяются целиком. Но если оставлять только точные совпадения или вхождения всех слов, то чаще всего ничего не найдется.

2. Работает, в пределах возможностей используемого стеммера.

3. Пока нет, надо думать над реализацией.

4. Именно так сейчас и работает. При задержке ввода в пол секунды начинается автоматический поиск.

5. Тоже надо думать над грамотной реализацией.

6. Будем обсуждать, пока ищем по заголовку и описанию, без приоритета.
Хорошая идея поиска по части слова.
Скажем при вводе "бит" уже можно выводить поиск по битвам, ну и suggest "битвы", "бить", но только те слова, которые реально встречаются в отзывах этого проекта.

Надо ещё понять, по какому принципу считается релевантность?
По голосам?
Текущая релевантость: считается количество совпадений слов в запросе и текущих фидбаках с учетом стемминга и после этого отображается в порядке от наибольшего количества к меньшему
По-идее, надо бы количество голосов как-то в эту формулу внести.
Т.к. с точки зрения полезности, важно собирать голоса в одном отзыве, не распыляя на дубликаты.
А сейчас если юзер просто точнее попал по запросу в какой то дубль - уйдёт в него.
Добавили поиск по части слова. Пример "автоза" в Вашем форуме. Будем думать как еще улучшить.
Спасибо!
Всё ещё странная логика сортировки результатов поиска.
Например, введите "режим" в Танках.
На первом месте заминусованная идея.
Следущим шагом доберемся и до учета рейтинга фидбака в поиске. Спасибо за замечание :)
Предлагаю улучшение поиска поставить в приоритет, т.к. большая часть того чем мы последнее время занимались - это борьба с последствиями ненайденных дублей. Давайте лечить причину.

Разбираю я дубли, речь зашла о весе танков.
Пишу в поиске "Вес". Вместо того чтобы получить отзыв "Вес танков", я получаю всё что угодно, но не его. Не удивительно, что другие наплодили дублей.
Тоже попробовал :) Действительно, все что угодно.
Но это связано с тем, что сейчас поиск по части слова. И, получается, находит все слова, начинающиеся на "вес".

Думаю нам надо сейчас заняться приоритетом слов по его нахождению в тексте. Т.е. слово в хеадере важнее слова в описании. Но в реале это не поможет с данной конкретной ситуацией. У кого какие предложения по решению конкретной ситуации? Может попробуем, если есть слово "вес", то ищем его, если нет, то все слова, начинающиеся на "вес"? Надо экспериментировать.
Честно говоря, не силён в поисковых системах. Возможно стоит покопать статьи/доклады на эту тему.

По логике вроде как да, заголовок важнее, но не очень сильно, примерно в 1.5 раза :)

По приоритету словоформ:
1. В чистом виде введённое слово
2. Словоформы от введённого слова (множественное число, падежи и т.п.)
3. Включение слова в другие

Сейчас ещё ситуацию усугубляет наличие только 10 результатов, но на эту тему есть отдельный отзыв.
Добавили понятие важности слова. Теперь оно учитывается при выдаче результата. Тестируйте, по нашему мнению стало лучше. Попробуйте "вес танка", "изида лечит".
Поиск стал в стопицот раз удобнее! Спасибо вам огромное!
Надеюсь, на этом не закончится, т.к. тонкий тюнинг ещё даст свои 20-30% удобства.
Ну и очень ждём внешний вид результатов поиска как обычные фильтры.
Сейчас как раз занимаемся подгонкой под вид обычного фильтра, за исключением листания страниц. Т.к. стремимся чтобы нужный результат был в 10. На практике редко кто переходит на вторую страницу поиска :)
Если всё таки оставите возможность листания, буду очень признателен.
База отзывов растёт и возможно через полгода уже действительно проще будет пролистать первые 20-30 результатов, чем шаманить с ключевыми словами.

Ну и не забывайте про нас - админов. Поиск дубликатов - то ещё развлечение :)
Есть дополнительное предложение - дополнительно учитывать в формуле релевантности количество голосов за отзыв (мера его популярности), причём именно количество проголосовавших, без учёта "положительности" идеи.
+1
ребята, дайте возможность объединять не по одному "юниту" а несколько за один раз. например нашел 5 дублей, было бы гораздо удобнее 5 раз нажать кнопку "объединить"
Создать список стоп-слов которые игнорировать при поиске
либо список слов с нулевым весом
например слова "Добавить","Сделать",...
Стоп-слова - отличная идея!
Answer
Completed
Здравствуйте.
В данный момент поиск выполняется следующим образом:

Индексация:
Индексируются тексты с заголовка и описания фидбэка, слова нормализуются стеммером (набором правил формообразования слов, для каждого языка свой).

Поиск:
Строка поиска разбивается на слова, слова нормализуются стеммером. Выполняется поиск индексов слов по полному совпадению нормализованного слова. Выбираются все фидбаки, где встретилось хотя бы 1 слово (максимум 10 фидбаков) и вверх поднимаются те, где совпадение слов больше.

Что планируем поэкспериментировать:
Попробовать поиск индексов слов по части слова (неполное совпадение).

Остальное давайте обсуждать в комментах.