Проверка орфографии для поиска в ASP.NET - PullRequest
2 голосов
/ 07 декабря 2010

Я строю поиск, в котором мне нужно реализовать несколько функций среди других.

1- В нем должны быть указаны все синонимы, например, если кто-то ищет кушетку, он должен принести результаты сопоставления для этого кушетки, а также лингвистические совпадения, такие как (диваны, подушки и т. Д.) Для этого я использую полнотекстовый поиск.

В своем запросе я использую FreeText, но он не дает требуемых результатов. Вот что я делаю,

select * from Furn_Products Where FreeText(FurnName, 'Couch');

Это должно привести к тому, что имена, содержащие подушки, диван и кушетку, будут отклонены от курса, но это принесет только имена с кушеткой, что я мог бы также сделать простым запросом «Нравится». Любые решения?

2- Мне нужно проверить на наличие опечаток, например, если кто-то наберет soofa, это должно привести к результатам для дивана, кушетки и т. Д.

Какие-нибудь советы, идеи о том, как этого добиться? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Я согласен с Нельсоном, там уже много поисковых систем с открытым исходным кодом, и они прошли много отладок. Самые крупные из них - это Lucene / Solr, Sphinx и Xapian.

Также будьте осторожны при добавлении расширения синонимов. Если вы увеличите paddle , например, до bat , вы можете получить много зоологических результатов, которые вам не нужны. Если вы делаете автоматизированные запросы. найдите несколько примеров и настройте набор тестов с угловыми примерами. Если вы ожидаете, что у вас будут пользователи-люди, найдите пару, которая проведет вас через их процессы, чтобы помочь построить ваш набор тестов, и планируйте очень дружить с журналами поиска. Желаем удачи!

0 голосов
/ 08 декабря 2010

Вы можете явно определить совпадения путем настройки тезауруса .

0 голосов
/ 08 декабря 2010

Насколько я знаю, полнотекстовый поиск не дает вам доступа ко всем возможным словам (stemming и т. Д.). Но начиная с SQL Server 2008 вы можете получить список всех проиндексированных слов.

Для получения дополнительных функций вам, вероятно, придется использовать сторонний индексатор, такой как Lucene.

...