Небольшой мой собственный проект - слепо создать поисковую систему с нуля без использования каких-либо внешних источников. Это в основном для обучения, и до сих пор у меня не было много проблем, когда у меня была и дилемма, и сложная проблема.Устранение плохого поиска на токенах в запросе
соблюдать этот случай:
Сюзи хочет искать «нечеткие медведь». Это нормально, функционирует так же хорошо, как и может. Тем не менее, Suzy завинчивается и набирает «fuzzybears». Прямо сейчас мой алгоритм поиска ломается, поскольку это интерпретируется как один токен, а не несколько токенов. Любой случай или комбинация слов, которые имеют хотя бы одно появление такого пробега на терне или склеенные жетоны, вызывает плохой результат поиска.
Для области, это то, что я пишу, используя комбинацию C# и T-SQL.
Я пробовал несколько решений, но из них ничего не получилось. Во-первых, я использовал список, чтобы использовать термины и создавать вариации, но это было слишком медленно для меня и требовало гораздо больше памяти, чем я считаю, что это необходимо.
Я хотел бы сохранить поисковые запросы в базе данных для статистики и, возможно, узнать больше об органически растущем алгоритме, поэтому, возможно, способ обработки этих склеенных токенов в SQL может быть решением, но я не знаю, как начать с чем-то вроде этого, если я не использовал курсор или какое-то другое медленное решение.
Я мог бы выполнять поиск, сохранять их в своей базе данных, создавать разные комбинации, в которых склеены некоторые маркеры, а затем использовать эти клеенные маркеры в качестве терминов, на которые нужно нажать? Проблема с этим решением заключается в том, что он занимает довольно много места, и мне не всегда нужны эти строки, поскольку такие орфографические ошибки не слишком распространены.
Главным образом, мне нужна скорость. Это действительно не должно быть красивым, но если это быстро и точно, я счастлив, даже если он занимает много места на диске.
Не спрашивайте здесь решения, но если кто-нибудь может указать мне в направлении, в котором я могу пойти, или было бы весьма полезно.
Как насчет использования словаря слов и сравнения введенной строки с ним? – Pikoh
Я думаю, что он уже пробовал это: «Во-первых, я использовал список, чтобы принять условия и создавать варианты», это не сработало. –
Ну, я понимаю, что он генерирует его во время выполнения. Я имею в виду создание предварительно загруженного списка, например, английских слов и их комбинаций (это может быть много работы, но это нужно делать только один раз). Тогда, поиск маркеров там должен быть быстрым, я думаю – Pikoh