Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск произвольной информации / 5 сообщений из 5, страница 1 из 1
09.09.2007, 10:49
    #34786422
StandD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск произвольной информации
Всем привет!

Вот такая ситуевина...
Пишется протокол событий в файл. Есть несколько полей пециализированных полей - например, номер документа, номер материала, тип документа. фамилия и пр. Есть поля просто текстовые с произвольной информацией. Индексов нет.
При поиске нужной информации делается перебор и все записи, содержащие этот фрагмент текста выводятся в текстовый файл для просмотра. Для создания истории, скажем, конкретного документа, проблем особых нет, поскольку этот номер содержится только в одном поле.
Проблема появляется тогда, когда ищется произвольная информация по всем полям (их 9 штук длиной до 150 символов /текст/). Дело в том, что записей уже под миллион, и процесс поиска затягивается до минуты.
Вопрос: нет ли какого-то хитрого способа справится с этим?
...
Рейтинг: 0 / 0
09.09.2007, 13:01
    #34786499
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск произвольной информации
StandDВопрос: нет ли какого-то хитрого способа справится с этим?
Способы есть - посмотрите поиск по данному форуму.

Самый простой, который я использую - создание дополнительной таблицы, в котором будут ключевые слова из каждой записи и номер строки в основоной таблице.... Естественно символьное поле в должно быть проиндексировано. Недостаток - надо самому каждый раз при любых изменениях изменять эту индексную таблицу.

Как альтернативу - можно использовать MS SQL Server full text search (он постороен по аналогичному принципу), но там все за Вас уже написал Microsoft

Good luck!
...
Рейтинг: 0 / 0
09.09.2007, 13:05
    #34786506
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск произвольной информации
Единственный способ ускорения поиска информации для FoxPro - это индекс. Для данной задачи Вам потребуется симулировать то, что обычно называется полнотекстовым индексом. Вкратце, идея заключается в следующем.

Например, есть строка с ID=1 в текстовом поле которой записано "Документ номер 1 от 09.09.2007"

Вы формируете еще одну таблицу, которая содержит два поля: идентификатор записи и одно слово

Код: plaintext
1.
2.
3.
4.
5.
6.
ID 	OneWord
 1 	Документ
 1 	номер
 1 	 1 
 1 	от
 1 	 09 . 09 . 2007 

Эта таблица индексируется по полю OneWord и когда Вам надо найти в какой же строке есть слово "Документ", то поиск ведется по этой дополнительной таблице.

Разумеется, это всего-лишь общая схема. Но идея, думаю, понятна.

PS: Сергей уже опередил
...
Рейтинг: 0 / 0
09.09.2007, 21:53
    #34786907
StandD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск произвольной информации
Спасибо всем, будем думать...
...
Рейтинг: 0 / 0
09.09.2007, 23:57
    #34786983
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск произвольной информации
ВладимирМPS: Сергей уже опередил
Sorry...

Но Вы описали более подробно
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Поиск произвольной информации / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]