:: Архив конференции по VFP до 2005 года
контекстный поиск
ERG
Автор

Сообщений: 25
Дата регистрации: 04.02.2005
1. Кто реализовывал на VFP и как конткетсный поиск (поиск вхождения фразы в тексте)(включая словоформы)?
Интересует что и как индексируется, какой алгоритм поиска, какая структура базы, как оптимизируется и т.д.

2. Где можно прочитать о создание COM объекта на VFP7?
Ratings: 0 negative/0 positive
Re: контекстный поиск
Penner

Сообщений: 4102
Откуда: Muenster
Дата регистрации: 26.04.2002
в Поиск
Ratings: 0 negative/0 positive
Re: контекстный поиск
Alex Roublev

Сообщений: 3695
Откуда: Ярославль
Дата регистрации: 28.09.2002
Цитата:
Инкрементный поиск...
forum.foxclub.ru
forum.foxclub.ru
Цитата:
Как сделать автоинкремент поля
forum.foxclub.ru

etc., etc. + Поиск
Ratings: 0 negative/0 positive
Re: контекстный поиск
ERG
Автор

Сообщений: 25
Дата регистрации: 04.02.2005
Alex Roublev

Это не то.
Суть вот в чем.
Есть очень большая база с memo полем, в котором хранится текстовая информация.
Пользователи делают запрос на выборку опрделенной информации по слову, набору слов, фразе. Нужно выбрать записи, в которых они встречаются. Вот меня и интересует как организовать базу и индексы, чтобы время выборки было минимальным.
Ratings: 0 negative/0 positive
Re: контекстный поиск
Alex Roublev

Сообщений: 3695
Откуда: Ярославль
Дата регистрации: 28.09.2002
* включаем в цикл
Locate for atcline('нужное слово', alltrim(lower(tabl.memo_pole)))!=0
*потом - Continue

или

SELECT * FROM Tabl WHERE ATCLINE('нужное слово', alltrim(lower(tabl.memo_pole)))!=0 INTO CURSOR tmp nofilter readwrite

for example:

SELECT * FROM main.scx WHERE ATCLINE('init',ALLTRIM(LOWER(methods)))!=0 INTO CURSOR tmp
* у меня выбираются 3 записи, где в memo-поле methods встречается слово 'Init' в словосочетании 'procedure Init'
Ratings: 0 negative/0 positive
Re: контекстный поиск
ERG
Автор

Сообщений: 25
Дата регистрации: 04.02.2005
Alex Roublev

К сожалению база большая, запросы идут часто, а так простым перебором получется медленно
Хочется типа такого, что при наполнении базы создается таблица вхождения слов, в каких записях они встречаются и на основании их уже делаьт select
Причем еще хочется, чтобы можно было выбирать словоформы (т.е. при вводе слова "клавиатура" выбиралось "клавиатурой", "клавиатурами" и т.д.)
Ratings: 0 negative/0 positive
Re: контекстный поиск
Alex Roublev

Сообщений: 3695
Откуда: Ярославль
Дата регистрации: 28.09.2002
2 ERG:

Цитата:
запросы идут часто, а так простым перебором получется медленно

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

Цитата:
при вводе слова "клавиатура" выбиралось "клавиатурой"

Ну если фокс приручить к орфографии русского языка, то вполне... Хотя врядли кто-то для решения узкой задачи возьмется за столь неблагодарное дело. А так достаточно указать основу существительного слова (без приставки, суффикса и окончания), чтобы получить потом результат близкий к желаемому. Команда ATCLINE как раз в этом, по-моему, неплохо поможет. Если база большая - пользуй Select. Это как раз такой случай.

Цитата:
при наполнении базы создается таблица вхождения слов

Может быть что-то эдакое?..

SELECT recno() as nom_rec, OCCURS('нужное слово', alltrim(lower(tabl.memo_pole))) as word_kol FROM tabl;
WHERE ATCLINE('нужное слово', alltrim(lower(tabl.memo_pole)))!=0;
INTO cursor tmp nofilter readwrite



Отредактировано (14.03.05 04:41)


------------------
И волки сыты, и овцы целы, и пастуху - вечная память...
Ratings: 0 negative/0 positive
Re: контекстный поиск
vlad

Сообщений: 850
Откуда: Запорожье
Дата регистрации: 28.09.2000
по-моему в книге Леса Пинтера о VFP 3.0 был пример решения такой задачи.
к сожалению ее под рукой нет, а на вскидку припоминается только то, что там применялась отдельная таблица для ключевых слов, где хранилось ключевое слово и ссылка на его местонахождение
Ratings: 0 negative/0 positive
Re: контекстный поиск
Гулин Федор

Сообщений: 4633
Откуда: Минск
Дата регистрации: 24.10.2002
>> отдельная таблица для ключевых слов, где хранилось ключевое слово и ссылка на его местонахождение
на 100 % согласен сам так делаю - в справочнике поставщиков - бью наименование на слова
и пишу в отдельную таблицу - словарь kpost,slovo
можно там повыкидывать какие-то слова (я выкидываю 1 буквенные не цифры)
но это не принципиально
>> Причем еще хочется, чтобы можно было выбирать словоформы (т.е. при вводе слова "клавиатура" выбиралось "клавиатурой", "клавиатурами
а когда я ищу по поиску в словаре - то инкремнтный поиск в принципе это и дает -
я думаю здесь достаточно будет набрать клавиат
ps в принципе формирование (дополнение) словаря можно оформить отдельной программой
и повесить на сервер - если вдруг база редактируется разными прог-ми разных авторов
Ratings: 0 negative/0 positive
Re: контекстный поиск
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
года 3 взад делал што-то типа спровчной телефонной службы, по рекламе, кот поступала в нам Редакцию.
Поиск был на основании построения динамического запроса. слова для поиска соот выбирались из справочника..
каждую ночь серевер шерстил данные. обновлялась таблица Word (WordID, Name) - хранит весь пословесный мусор. Далее используя MS Word для каждого слова одновлялась таблица синонимоф Synonim (SynonimID, Name) - соотв имели слова в им.падеже ед. числе. Из-за того, шта данная процеду оч длинная, то таблица слоф и синонимоф имела отношение М:М.
и уже исходя из синонимоф и их отношения к словам строилась таблица для реализации М:М синонимоф к данным.
Оперы при поиске выбирали из нужное количество слоф из справочника синонимоф и далее генерился SELECT-SQL для выборки нужных данных
ЗЫ актуальность поиска - 1 день. по условию задачи такой лаг допускался. если у тя нельзя, то генреацию синонимоф и линкофки нужно делать ессна на этапе сохранения данных
ЗЫЫ можна обойтись и без синонимоф, выдавать проста весь список слоф. соотв операторы "клавиатура" выбирут в разных ее введеных эпостасях вот и фс:е




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика