2010-06-02 4 views
0

У меня есть таблица со столбцами: имя автора, фамилия автора и название книги Множество пользователей вставляют в базу данных через импорт, и я бы хотел избежать дубликатов. Так что я пытаюсь сделать что-то вроде этого: У меня есть запись в БД: Имя: «Исаак» Фамилия: «Assimov» Название: «Я, робот»Поиск по названию и автору

Если пользователь пытается добавить его снова, это будет в основном нерасширенный текст (не будет разделен на имя автора, имя автора и название книги) Итак, в основном это выглядит так: «Исаак Азимов - I Робот» или "Азимов, Айзек - Я робот" или "I Robot Айзека Азимова"

Вы видите, где я нахожусь?

(Я не могу заставить пользователя разделить все книги на имя автора, фамилию автора и название книги, и мне даже не нравится идея заставить пользователя, потому что он не слишком удобен для пользователя)

Каков наилучший способ (в SQL) сравнить все возможные сценарии bookdata с тем, что у меня есть в базе данных, а не добавлять одну и ту же книгу дважды. Я думал о возможности предложить пользователю: «ЭТО ТАКОЕ книга, которую вы пытаетесь добавить?» (Представьте список вместо этого слова, так же, как на StackOverflow - задать вопрос. - Вопросы, относящиеся

Я думал о

soundex 

и, возможно, даже

like 

операторов, но до сих пор я не получал результатов, на которые я надеялся.

+0

Я не понимаю, почему вы отвергли идею принуждения пользователя разделить все книги на имя автора, имя автора и название книги на этапе ввода данных. Это единственный способ получить надежные результаты. –

+0

пользователь практически будет иметь список книг в txt, я импортирую это по строкам ... – Ash

ответ

0

Вы можете реализовать значительно лучшие алгоритмы для нечеткого соответствия, чем soundex/difference, взгляните на Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server.

Вы также можете посмотреть на реализацию Полного каталога текста и с помощью «поисковой системы» стиля FREETEXT() который:

предиката используется в ИНЕКЕ для поиска столбцов, содержащих символьных типов данных для значений, которые соответствуют смыслу, а не просто точной формулировку слов в условии поиска

в зависимости, что вы делаете года Возможно, вы также можете использовать веб-службу ISBN для получения нормализованных данных.

Смежные вопросы