|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
Использую sqlite.dll для полнотекстового поиска в windows. В интернете много информации как создать виртуальные таблицы с использованием модулей FTS1, FTS2, FTS3 . Код: plaintext 1.
В исходниках есть функция sqlite3Fts2Init() , но она не вынесена на верх. Помогите решить эту проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2007, 14:19 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
Посмотри здесь здесь ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2008, 03:27 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
Предварительно нужно скачать fts2dll-3_3_13.zip (или более новую версию) и установить в папку с программой fts1.dll и fts2.dll Далее: Создаём тестовую таблицу: CREATE VIRTUAL TABLE test USING fts3(name); Записываем какие-либо тестовые данные: INSERT INTO test VALUES ('Новое сообщение в форум "Другие СУБД"'); INSERT INTO test VALUES ('fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite'); Теперь тестируем: SELECT name FROM test WHERE name MATCH 'может автономная библиотеку'; -->fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite SELECT name FROM test WHERE name MATCH 'мож* автономн* библиот*'; -->fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2008, 03:52 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
AlexbootchПредварительно нужно скачать fts2dll-3_3_13.zip (или более новую версию) и установить в папку с программой fts1.dll и fts2.dll Далее: Создаём тестовую таблицу: CREATE VIRTUAL TABLE test USING fts3(name); Записываем какие-либо тестовые данные: INSERT INTO test VALUES ('Новое сообщение в форум "Другие СУБД"'); INSERT INTO test VALUES ('fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite'); Теперь тестируем: SELECT name FROM test WHERE name MATCH 'может автономная библиотеку'; -->fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite SELECT name FROM test WHERE name MATCH 'мож* автономн* библиот*'; -->fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite и т.д. Извиняюсь, но скачать нужно только новую библиотеку SQLite 3.5.6 (fts2dll-3_3_13.zip), т.к. fts3 уже в нее встроен. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2008, 05:07 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
Alexbootch AlexbootchПредварительно нужно скачать fts2dll-3_3_13.zip (или более новую версию) и установить в папку с программой fts1.dll и fts2.dll Далее: Создаём тестовую таблицу: CREATE VIRTUAL TABLE test USING fts3(name); Записываем какие-либо тестовые данные: INSERT INTO test VALUES ('Новое сообщение в форум "Другие СУБД"'); INSERT INTO test VALUES ('fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite'); Теперь тестируем: SELECT name FROM test WHERE name MATCH 'может автономная библиотеку'; -->fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite SELECT name FROM test WHERE name MATCH 'мож* автономн* библиот*'; -->fts1 может быть построено как и автономная коллективная библиотека, или статически связанная в библиотеку SQLite и т.д. Извиняюсь, но скачать нужно только новую библиотеку SQLite 3.5.6 (fts2dll-3_3_13.zip качать не нужно), т.к. fts3 уже в нее встроен. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2008, 05:10 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
странная проблема с этим fts создал таблицу Код: plaintext 1.
но при запросе Код: plaintext
решил, что не добавилась запись, но посмотрев файл - увидел весь документ. странно использую Delphi компонент ASQLite3 и отдельно менеджер базы SQLite Maestro. оба не хотят отдавать мне это поле в полном обьеме помогите плиз ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2009, 11:03 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
но если использовать стандартный sqlite3.exe то при таком запросе данные выдаются в полном обьеме на экран наверное компоненты и программа тупят ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2009, 11:16 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
Поробуй создать указав типы колонок, например: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2009, 12:50 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
проблема была в компонентах дело в том, что в полнотекстовом поиске sqlite3.dll возвращает пустой тип поля и компоненты по умолчанию ставили, что это string[255] и оно обрезало соответственно данные подправил на text и всё как часики работает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2009, 13:08 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
подскажите плиз кто в этом знает больше можно ли как-то настроить индексатор FTS,чтобы он не индексировал HTML ? либо может как-то задать список исключаемых слов, чтобы не индексировало? заливаю в поле html странички. и оно индексирует не только сам текст, но и HTML теги :( они ненужны ни капли эти индексы тегов ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2009, 13:13 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
kolioподскажите плиз кто в этом знает больше можно ли как-то настроить индексатор FTS,чтобы он не индексировал HTML ? либо может как-то задать список исключаемых слов, чтобы не индексировало? заливаю в поле html странички. и оно индексирует не только сам текст, но и HTML теги :( они ненужны ни капли эти индексы тегов Значит перед заливом в БД, нужно парсить HTML и отсекать тэги и скрипты, оставляя только текст. Именно так и работают поисковые машины. Регулярные выражения вам помогут в этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2009, 19:21 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
kolioподскажите плиз кто в этом знает больше можно ли как-то настроить индексатор FTS,чтобы он не индексировал HTML ? либо может как-то задать список исключаемых слов, чтобы не индексировало? заливаю в поле html странички. и оно индексирует не только сам текст, но и HTML теги :( они ненужны ни капли эти индексы тегов Этот вопрос постоянно повторяют в рассылке SQLite. Ответ простой - следует написать нужный токенайзер, который будет игнорировать html-тэги. Смотрите исходники модуля fts3, там есть примеры и комментарии. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2009, 20:33 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
MBG Этот вопрос постоянно повторяют в рассылке SQLite. Ответ простой - следует написать нужный токенайзер, который будет игнорировать html-тэги. Смотрите исходники модуля fts3, там есть примеры и комментарии. понял. спасиб я так понимаю это будет dll файлик, который подключить потом и будет счастье :) вроде всё верно понял Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 12:05 |
|
SQLITE полнотекстовый поиск
|
|||
---|---|---|---|
#18+
kolioMBG Этот вопрос постоянно повторяют в рассылке SQLite. Ответ простой - следует написать нужный токенайзер, который будет игнорировать html-тэги. Смотрите исходники модуля fts3, там есть примеры и комментарии. понял. спасиб я так понимаю это будет dll файлик, который подключить потом и будет счастье :) вроде всё верно понял Код: plaintext
Да, нужно сделать токенайзер и подключить. В свое время я разбирался с этим вопросом, оказалось, что если браться, то нужно делать поддержку юникода плюс стеммер и морфологический поиск. Сам токенайзер лишь разбивает текст на лексемы, а вот для поиска по словоформам, а тем более для нечеткого поиска еще многое сделать нужно. В итоге поддержку юникода я в свою сборку SQLite добавил, а за остальное не стал браться (libICU мне не подходит, т.к. в несколько раз снижает быстродействие системы, а на моих базах в гигабайты и десятки гигабайт это критично). Можете в репозитории эту сборку взять http://mobigroup.ru/page/debian По умолчанию включен unaccent, т.е. при поиске и сортировке буквы ё==е и й==и, таким образом решается проблема различия в написании слов. Стеммер можно реализовать двумя способами - как функцию преобразования словоформы к базовой форме, или как таблицу возможных словоформ. Существуют скрипты, которые создают словари на основе правил ispell и пр. Я рассматривал именно такой вариант, т.к. он позволяет использовать сразу несколько словарей, в то время как использование нескольких последовательных стеммеров может привести к ошибкам и существенно повлиять на быстродействие. Что касается устойчивого к ошибкам написания поиска, можно использовать хэш soundex или триграммы. Алгоритм soundex в SQLite уже реализован, следует лишь активировать его поддержку при сборке. На практике soundex весьма эффективен для транслитерированных русских слов. Можете посмотреть дискуссию с разработчиками FTS, как раз здесь я про стеммеры, морфологию и нечеткий поиск спрашивал: http://www.nabble.com/FTS-statistics-and-stemming-td18298526.html Так и не добрался посмотреть, как в PostgreSQL сделан полнотекстовый поиск, может быть, имеет смысл его портировать, если он достаточно эффективен (замечу, что для SQLite-ориентированного решения требования по быстродействию минимум на порядок выше, чем для клиент-серверных СУБД). Существуют и открытые системы морфологического поиска для русского языка, но с ними я не разбирался. Ссылки сейчас не назову, но мне их подсказали с полгода-год назад в рассылке debian-russian, можете поискать в архивах. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 15:58 |
|
|
start [/forum/topic.php?fid=54&fpage=29&tid=2009449]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
1ms |
others: | 327ms |
total: | 520ms |
0 / 0 |