free open-source SQL full-text search engine

Need a hand?
+1-888-333-1345


Sphinx

Community

Services

Misc

 Subscribe in a reader

Tracked by ClickAider

Forums :: Register :: Login :: Forgot your password? :: Search

anonymous user


Поиск по стандартному форуму

Russian forum | 1 | 2 | 3 | 4 | 5 | ... | 32 | 33 | 34 | 35 | next »» | Create new thread

kaibox

Name: Andrey
Posts: 9

2010-06-09 12:51:27 | reply!


Никак не могу понять, как сделать source для индексирования по стандартному форуму,
который предельно упрощенно представлен двумя таблицами:

-- Таблица тем

create table boards (
id int unsigned not null PRIMARY KEY auto_increment,
subforum int,
name varchar(50),
title varchar(100),
body varchar(3000)
);

-- Таблица ответов (постов) в теме

create table posts (
id int unsigned not null PRIMARY KEY auto_increment,
ref int, -- ссылается на id темы
name varchar(50),
body varchar(3000)
);

Я не могу понять, как склеить одновременный поиск по таблице тем форума
и по таблице постов в каждой теме. Поиск будет в boards.title, boards.body и в posts.body.
Если я объединяю две таблицы в одном запросе через JOIN, то в качестве уникального
документа для индексации будет выступать posts, а не boards. Данные из boards просто
многократно продублируются для каждого поста.

select boards.id, boards.title, boards.body, posts.body from boards,posts where
boards.id=posts.ref;

А раз дублируются, то нарушается уникальность id для boards, т.к. постов в теме много и
для каждого поста будет уже неуникальный id темы (boards.id будет употреблен один и тот
же для постов одной темы), да и индекс растет из-за дублей (title темы и ее body будут в
каждом посте), следовательно файл индекса растет, скорость поиска падает - нехорошие
моменты. Вроде бы тут все можно сделать, но как результат поиска мне нужен id темы, а не
отдельного поста. А он не уникальный. Тут тупик.

Если делать два source и два индекса, то не могу понять, как склеить выходные данные,
чтобы получить id тем. Допустим я получу из первого source: id,title - это то, что мне
нужно для вывода. Но как быть со вторым source? Там я получаю ref, которые и есть
boards.id, но title там нет. Делать отдельные запросы к базе, чтобы получить недостающие
title?
И потом, как еще совместить найденные id из boards и ref из posts? Т.е. мне нужно еще в
PHP прогонять id и ref, чтобы убрать дубли и отсортировать их? Про релевантность вообще
молчу пока...

Может как-то проще все решается?

kaibox

Name: Andrey
Posts: 9

to: kaibox, 2010-06-10 13:52:45 | reply!


Если все-таки разделять поиск на две части (отдельно по темам и по постам), то совершенно
неясно, как искать по постам, если нужно отфильтровать по subforum, т.е. искать только по
какому-то подфоруму. В самих "постах" нет такой информации.

kaibox

Name: Andrey
Posts: 9

to: kaibox, 2010-06-17 09:34:15 | reply!


Форум, я понял, с 2009 года уже не поддерживается автором изобретения. Жаль.
Худо-бедно я нашел решение с представлением source для форума - просто объединил таблицы
и потом сгруппировал результат по номеру тем. Это работает.

Хочу сказать о другом. Если искать с использованием расширенного поиска и использовать
близость слов помощью тильды (~10), например:
'@(title,body) "слова запроса"~10'
то все работает, но (!) есть запросы, на которых поиск ложится с ошибкой Segmentation
Fault. Вот случайно напоролся на один такой запрос из двух слов (достаточно
распространенных для нашего форума), ничем особо не отличающийся от остальных. Если я
уменьшаю proximity до ~8, то все работает. Но ведь это частный случай. Вот пока до 8-ми
уменьшил, crash-запросов больше не встречал. Посмотрим, может пользователи нашего сайта
будут жаловаться еще.
Но это баг. Версия Sphinx последняя на данный момент (ставили неделю назад). Система
Linux Fedora 64-х разрядная.
Я посмотрел по форуму - есть такая проблема. Надеюсь, Андрей все-таки найдет время для
доводки движка.

kaibox

Name: Andrey
Posts: 9

to: kaibox, 2010-06-17 09:42:38 | reply!


crash-запрос сам нашел. Просто поменял два слова запроса местами :)))) И смех, и слезы...
На запросе "слово1 слово2" глючит с ~10, а если слова местами поменять, то и с ~8 глючит.
На других словах все великолепно работает.

kaibox

Name: Andrey
Posts: 9

to: kaibox, 2010-06-17 09:58:47 | reply!


Решение: убрал нафиг поиск с proximity. Оставил просто поисковую фразу без кавычек.

shodan

Name: Andrew Aksyonoff
Posts: 4275

to: kaibox, 2010-06-23 19:08:30 | reply!


> есть запросы, на которых поиск ложится с ошибкой Segmentation Fault.

Заслайте данные для воспроизведения - по мере сил будем чинить.

Баги, которые нельзя воспроизвести - чинить не умеем :(

shodan

Name: Andrew Aksyonoff
Posts: 4275

to: kaibox, 2010-06-23 19:09:57 | reply!


> Форум, я понял, с 2009 года уже не поддерживается автором изобретения. Жаль.

Форум прочитывается по мере наличия времени.

Вот, начало появляться.

kaibox

Name: Andrey
Posts: 9

to: shodan, 2010-07-30 08:09:50 | reply!


Мне важно все-таки использовать поиск с расстояниями между словами, поэтому я готов
поучаствовать в доводке софта. Что от меня требуется?

shodan

Name: Andrew Aksyonoff
Posts: 4275

to: kaibox, 2010-08-04 20:26:05 | reply!


> Мне важно все-таки использовать поиск с расстояниями между словами, поэтому я готов
> поучаствовать в доводке софта. Что от меня требуется?

Все необходимые данные для воспроизведения проблемы у нас, как минимум.

Минимальные конфиг, SQL дамп, итп.

kaibox

Name: Andrey
Posts: 9

to: shodan, 2010-08-05 14:12:44 | reply!


> Минимальные конфиг, SQL дамп, итп.

Куда высылать?

shodan

Name: Andrew Aksyonoff
Posts: 4275

to: kaibox, 2010-08-05 14:58:10 | reply!


> > Минимальные конфиг, SQL дамп, итп.
>
> Куда высылать?

shodan@ в известном домене, например.

kaibox

Name: Andrey
Posts: 9

to: shodan, 2010-08-11 07:34:43 | reply!


Выслал 8 августа на почту. Сообщите, пожалуйста, когда получите информацию.

kaibox

Name: Andrey
Posts: 9

to: kaibox, 2010-08-31 09:54:29 | reply!


Уважаемый Андрей,

Вы просили меня сформировать и выслать необходимую информацию для отладки вашего поиска.
Я ее выслал и просил уведомить о получении. От Вас до сих пор никакой реакции.
Подожду еще недельку, после которой подобное "взаимодействие" буду считать законченным.

Russian forum | 1 | 2 | 3 | 4 | 5 | ... | 32 | 33 | 34 | 35 | next »» | Create new thread


Copyright © Sphinx Technologies Inc, 2009