Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / указать явно, какой индекс использовать в select-е? / 10 сообщений из 10, страница 1 из 1
02.09.2013, 09:50
    #38383845
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
возможно ли это и есть ли в этом смысл для sqlite?

есличо, использую запросы для сложного поиска по текстовым поля одной таблицы, вроде:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
select
title
,source
,description
,date 
from items where 
(title LIKE 
'%чеч%' 
and
title LIKE 
'%укр%'
and
title LIKE 
'%журн%')
or
(description LIKE 
'%чеч%' 
and
description LIKE 
'%укр%'
and
description LIKE 
'%журн%')
order by date desc;



создал ручками (ладно, sqliteman-ом) индексы для полей title и description (огромное текстовое поле), виснет всеравно ужос как
...
Рейтинг: 0 / 0
02.09.2013, 12:13
    #38383998
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
для таких запросов можно даже не заморачиваться с индексами, лучше не будет.
...
Рейтинг: 0 / 0
02.09.2013, 12:33
    #38384023
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
Да, можно построить полнотекстовый индекс, если он понмиает русский, я просто не в курсе.
И запросы типа таких будут выполняться намного лучше, если конечно будет искаться не внутряенняя часть слова.
Я бы так и делал.

а еще можно сделать свой специальный индекс, но для этого надо будет делать дополнительную таблицу, содержащую побитые по буквам слова типа такого

русский
усский
сский
ский
кий
ий
й

привязать ее к исходной, проиндексировать и в ней искать.
...
Рейтинг: 0 / 0
02.09.2013, 12:44
    #38384042
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
WinnipuhДа, можно построить полнотекстовый индекс, если он понмиает русский, я просто не в курсе.
И запросы типа таких будут выполняться намного лучше, если конечно будет искаться не внутряенняя часть слова.


не совсем понял мысль
слово может содержаться внутри текста, и - да! - это может быть и часть "лексического" слова: дизельпанк овые, и т.д.
сейчас уже подумываю чтобы сделать импорт - вернее, регулярный импорт! - в postgree, скорости поиска ради, но объем работы и количество доступного времени оставаливают пока что :(
...
Рейтинг: 0 / 0
02.09.2013, 12:55
    #38384051
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
ФрилансерWinnipuhДа, можно построить полнотекстовый индекс, если он понмиает русский, я просто не в курсе.
И запросы типа таких будут выполняться намного лучше, если конечно будет искаться не внутряенняя часть слова.


не совсем понял мысль
слово может содержаться внутри текста, и - да! - это может быть и часть "лексического" слова: дизельпанк овые, и т.д.
сейчас уже подумываю чтобы сделать импорт - вернее, регулярный импорт! - в postgree, скорости поиска ради, но объем работы и количество доступного времени оставаливают пока что :(

и что даст PGSQL?

делайте полнотекстовый индекс, потому что собственно и в постгресе это будет тоже лучшее решение.

теперь по "не совсем понял мысль":

дизельпанк овые

Я имел в виду, что если юзер будет искать в данном примере

диз ель панковые
диз ельпанк овые

и т.д. то в этом случае ни обычные, ни полнотекстовые индексы не помогут.

А так ваша задача - для полнотекстового поиска.
...
Рейтинг: 0 / 0
02.09.2013, 13:08
    #38384067
Фрилансер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
[quote Winnipuh]Фрилансерпропущено...
и что даст PGSQL?


как минимум - какой-то оптимизатор запросов (и кэш) + демон-сервис, адекватно работающий с памятью/потоками/прочее

Winnipuhделайте полнотекстовый индекс, потому что собственно и в постгресе это будет тоже лучшее решение.


ну я сделал индексы для полей поиска через sqliteman, вот что он мне говорит о нем:
Код: sql
1.
2.
-- Описать ITEMS_IDX_DESC
CREATE INDEX "items_idx_desc" on items (description ASC)


это оно?
...
Рейтинг: 0 / 0
02.09.2013, 14:13
    #38384175
fd00ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
Фрилансерсоздал ручками (ладно, sqliteman-ом) индексы для полей title и descriptionсоздать индексы ты, конечно, можешь, только использовать их like не сможет
потому - или full text search, или full scan :-)
...
Рейтинг: 0 / 0
02.09.2013, 14:21
    #38384187
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
[quot Фрилансер]Winnipuhпропущено...


как минимум - какой-то оптимизатор запросов (и кэш) + демон-сервис, адекватно работающий с памятью/потоками/прочее

пропущено...


ну я сделал индексы для полей поиска через sqliteman, вот что он мне говорит о нем:
Код: sql
1.
2.
-- Описать ITEMS_IDX_DESC
CREATE INDEX "items_idx_desc" on items (description ASC)


это оно?

не...

вот
http://www.sqlite.org/fts3.html
...
Рейтинг: 0 / 0
02.09.2013, 14:22
    #38384191
Winnipuh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
вот еще коротко, там ссылка на книжку есть, ее найдите, полезная бывает.

http://answers.oreilly.com/topic/1955-how-to-use-full-text-search-in-sqlite/
...
Рейтинг: 0 / 0
10.09.2013, 18:49
    #38392774
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
указать явно, какой индекс использовать в select-е?
WinnipuhДа, можно построить полнотекстовый индекс, если он понмиает русский, я просто не в курсе.

Эскулайт хранит строки в уникоде, так что для токенайзера без разницы, какой язык. Если стеммер русский интересует, то я уже давно сделал модуль [ http://sqlite.mobigroup.ru/timeline?r=mbg-fts3%5D]http://sqlite.mobigroup.ru/timeline?r=mbg-fts3]
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / указать явно, какой индекс использовать в select-е? / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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