|
|
|
Поиск произвольной информации
|
|||
|---|---|---|---|
|
#18+
Всем привет! Вот такая ситуевина... Пишется протокол событий в файл. Есть несколько полей пециализированных полей - например, номер документа, номер материала, тип документа. фамилия и пр. Есть поля просто текстовые с произвольной информацией. Индексов нет. При поиске нужной информации делается перебор и все записи, содержащие этот фрагмент текста выводятся в текстовый файл для просмотра. Для создания истории, скажем, конкретного документа, проблем особых нет, поскольку этот номер содержится только в одном поле. Проблема появляется тогда, когда ищется произвольная информация по всем полям (их 9 штук длиной до 150 символов /текст/). Дело в том, что записей уже под миллион, и процесс поиска затягивается до минуты. Вопрос: нет ли какого-то хитрого способа справится с этим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 10:49 |
|
||
|
Поиск произвольной информации
|
|||
|---|---|---|---|
|
#18+
StandDВопрос: нет ли какого-то хитрого способа справится с этим? Способы есть - посмотрите поиск по данному форуму. Самый простой, который я использую - создание дополнительной таблицы, в котором будут ключевые слова из каждой записи и номер строки в основоной таблице.... Естественно символьное поле в должно быть проиндексировано. Недостаток - надо самому каждый раз при любых изменениях изменять эту индексную таблицу. Как альтернативу - можно использовать MS SQL Server full text search (он постороен по аналогичному принципу), но там все за Вас уже написал Microsoft Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 13:01 |
|
||
|
Поиск произвольной информации
|
|||
|---|---|---|---|
|
#18+
Единственный способ ускорения поиска информации для FoxPro - это индекс. Для данной задачи Вам потребуется симулировать то, что обычно называется полнотекстовым индексом. Вкратце, идея заключается в следующем. Например, есть строка с ID=1 в текстовом поле которой записано "Документ номер 1 от 09.09.2007" Вы формируете еще одну таблицу, которая содержит два поля: идентификатор записи и одно слово Код: plaintext 1. 2. 3. 4. 5. 6. Эта таблица индексируется по полю OneWord и когда Вам надо найти в какой же строке есть слово "Документ", то поиск ведется по этой дополнительной таблице. Разумеется, это всего-лишь общая схема. Но идея, думаю, понятна. PS: Сергей уже опередил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 13:05 |
|
||
|
Поиск произвольной информации
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, будем думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2007, 21:53 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=185&tid=1588794]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 350ms |

| 0 / 0 |
