|
rim
|
|
Как сформировать запрос?01.01.2008, 15:28. Показов 1607. Ответов 10
Метки нет (Все метки)
Есть таблица с полями:
id, doc_id, text Эта таблица содержит контент документов сайта, проиндексированных для поиска. Так как максимальный размер текстового поля в Access равен 255, то пришлось разбивать содержимое документа на несолько частей. Doc_id - это id документа из списка документов. Поле doc_id может иметь несколько одинаковых значений. Поисковая фраза разбивается на слова и представляется в виде like-конструкций. Как можно ли построить запрос, чтобы в результате получился набор записей, в которых входят doc_id только тех документов, в которых искомая фраза, а точнее набор слов встречается в полном составе. Пожалуста, подскажите хотя бы в каком направлении надо идти |
|
| 01.01.2008, 15:28 | |
|
Ответы с готовыми решениями:
10
Как сформировать запрос? Как сформировать запрос Как сформировать запрос для даты |
|
YURA
|
|
| 02.01.2008, 08:23 | |
|
А почему бы и нет...
Если допустить, что искомая фраза не превышает 255 символов(но лучше, чтобы она была гораздо меньше, все зависит от максимальной возможной длины слов в искомой фразе) и она есть в документе, то есть 2 варианта: 1) Она полностью содержится в одном из кусков 2) Она содержится на границе двух различных кусков Т.е. на вскидку: select distinct doc_id from [таблица] as a left join [таблица] as b on a.doc_id=b.doc_id and a_id<>b.id where a.text & iif(isnull(b.text),'',b.text) like '*Фраза*' |
|
|
msd
|
|
| 02.01.2008, 10:33 | |
|
Кстати, что мешает использовать MEMO вместо TEXT? Если тексты не превышают 64К каждый, их не надо будет разбивать и поиск упростится.
|
|
|
rim
|
|
| 03.01.2008, 21:41 | |
|
MEMO не индексируется, и поиск по нему не возможен (средствами SQL), хотя есть вариант, который по идее и надо было бы использовать, это хранимые процедуры, но их я еще ни разу не писал, но собираюсь все же попробовать.
|
|
|
0 / 0 / 0
Регистрация: 31.03.2007
Сообщений: 59
|
|
| 04.01.2008, 13:42 | |
|
Я лично никогда не занимался полнотекстовым поиском, но по моему здесь в корне неверный подход. Хранить в БД надо слова и их веса (частоту попадания) в html файлах. При чем желательно исключить всякие а,не,в и т.п не несущие информации слова. А запихивать контент в БД смысла нет (если только в СУБД не подерживается полнотекстовый поиск), тем более строить по нему индекс - он практически никогда не будет использоваться, а вот база будет расти как минимум в два раза быстрее.
0
|
|
|
rim
|
|
| 04.01.2008, 13:58 | |
|
Я сам хотел сделать нормальную систему, с индексацией, но для этого мне понадобились бы хранимые процедуры, к которым я не знаю подхода, никогда не использовал. А без них про эффективную работу индексатора можно забыть. Я сделал быстренько, чтоб показать клиенту, да поиск есть (по сайту). Ну а там я напишу все как полагается. Хотя мысль, о том, что писать это все на Access, меня пугает
|
|
|
0 / 0 / 0
Регистрация: 31.03.2007
Сообщений: 59
|
|
| 04.01.2008, 15:04 | |
|
Если пользуешься MS платформой то бояться нечего.
Просто будеш пользоваться mdb базой как местом хранения. Хранимые процедуры не нужны задача выборки не очень сложная-- хп заменит гроздь запросов сохраненная в mdb файле. А вот задача индексации ляжет на плечи твоего приложения (asp?).
0
|
|
|
rim
|
|
| 04.01.2008, 15:43 | |
|
ну, срипт, занимающийся индексацией - это не совсем то, как мне кажется. Попробую припахать IndexServer, он для этого и создавался
|
|
|
msd
|
|
| 06.01.2008, 10:45 | |
|
МЕМО не индексируется, но искать по нему при помощи SQL можно!
Например, надо найти вхождение фразы 'найти слово'. Пишем запрос: Select * from Table where memoField like '*найти*слово*' or memoField like '*слово*найти*' Работает 100%! |
|
|
YURA
|
|
| 06.01.2008, 14:09 | |
|
На MS Jet - да.
А при чем тогда хранимые процедуры? |
|
|
rim
|
|
| 06.01.2008, 18:51 | |
|
Хранимые процедуры - для индексации, чтобы не заваливать сервер тысячью мелких запросов, а послать все слова процедуре, и она их проверит на наличие в словаре, обработает, внесет в словарь, если его еще нет и т.д. Иначе индексация будет идти со скоростью диалапа
.Но как я уже сказал, есть возможность возложить эту работу на Index Server, только пока руки не доходят до него. Может по МЕМО и можно искать, да только я уже написал через ТЕКСТОВОЕ. Переделывать буду уже на что-то серьезное, с индексированием не текста документа, а слов - либо на IS, либо на ХП. |
|
| 06.01.2008, 18:51 | |
|
Помогаю со студенческими работами здесь
11
Как сформировать правильный запрос (отчет)? Некорректная база, как сформировать select запрос Как правильно сформировать запрос Как правильно сформировать запрос к БД? Как сформировать запрос MaskEdit Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|