|
AlexB ↓
|
 |
|
17 Июль, 2009, 01:47:32
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3423 Сила слова: 2.6
|
Если я делаю поисковый запрос по нескольким индексам, типа
$sphinx->Query($phrase, '*')
то имею результат типа:
[matches] => Array
(
[236644] => Array
(
[weight] => 5
[attrs] => Array
(
[dt_ts] => 1247774400
[title] => 100
)
)
...
Это, конечно, прелесно. Но как узнать 236644 это id новости или скажем статьи, которые в разных таблицах БД и соответственно в разных индексах?
Пока лишь пришло в голову в каждую индексируемую таблицу добавить поле и тупо прописать ему константное значение для всех записей. Тогда смогу получить инфу из attrs. Но это же кривь ...
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
17 Июль, 2009, 01:51:59 , спустя 4 минуты 27 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
AlexB, да, добавлять в индекс `row_type` (и числовые индексы например... 1,2,3,4) Спустя 1 минуту 29 секунд добавил
sql_query_pre = SET NAMES utf8
sql_query_pre = SET CHARACTER SET utf8
sql_query = \
select (`n`.`id` * 10) + 1 as `id`, `n`.`title` as `title`, `ns`.`text` as `text`, `created_on` as `created`, 1 as `row_type` \
from `news_source` as `ns` \
left join `news` as `n` on `n`.`id` = `ns`.`news_id` \
where `n`.`active` = 1 and `n`.`uri` != '' and `n`.`title` != '' \
order by `n`.`id` desc;
# limit 1000;
sql_attr_uint = row_type
sql_attr_timestamp = created
sql_query_info = SELECT * FROM `news` WHERE `id` = ($id - 1) / 10
Спустя 1 минуту 7 секунд добавил AlexB, кстати, рекомендую юзать SphinxSE, либо ShinxQL
|
|
|
|
|
Записан
|
|
|
|
|
AlexB ↓
|
 |
|
17 Июль, 2009, 02:02:43 , спустя 10 минут 44 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3423 Сила слова: 2.6
|
А ну да, прям в индекс
Select 1 as News, Id, Date ...
Select 2 as Artice, Id, Date ...
Туплю, в общем, просто сфинкс не я ставил, я только извлекаю, надо пнуть админа чтоб сделал Спустя 1 минуту 48 секунд добавил Пока ты мне код добавлял, до меня самого доперло ....
Спасибо, а то чего-то заклинило ...
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
17 Июль, 2009, 02:03:34 , спустя 51 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
Select 1 as News, Id, Date ...
Select 2 as Artice, Id, Date ...
первым должен идти ид, обязательно, а не "1 as News"
вот еще почитай http://adw0rd.ru/2009/sphinxsearch/
|
|
|
|
|
Записан
|
|
|
|
|
AlexB ↓
|
 |
|
17 Июль, 2009, 02:07:17 , спустя 3 минуты 43 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3423 Сила слова: 2.6
|
первым должен идти ид, обязательно, а не "1 as News"
Спасибо, учтем.
вот еще почитай http://adw0rd.ru/2009/sphinxsearch/
Да я читал.
Кстати еще вопрос. Чтоб сделать отображение контекста в котором найдено слово, есть какие-нибудь готовые решения?
Sphinx в отличие от некоторых других поисковиков такой инфы не хранит, я верно это понял?
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
17 Июль, 2009, 02:07:56 , спустя 39 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
Кстати еще вопрос. Чтоб сделать отображение контекста в котором найдено слово есть какие-нибудь готовые решения?
Sphinx в отличие от некоторых других поисковиков такой инфы не хранит, я верно это понял? есть такая возможность в Sphinx, только я ей не пользовался и не помню названия, но точно есть!
|
|
|
|
|
Записан
|
|
|
|
|
AlexB ↓
|
 |
|
17 Июль, 2009, 02:10:37 , спустя 2 минуты 41 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: в ухо Карма: 89
Сообщений: 3423 Сила слова: 2.6
|
Че-то мы не нашли.
Он вообще только числа выплевывает ... никакой текстовой информации.
Можно, конечно, самим попытаться соорудить, но во первых надо анализировать строку запроса, во вторых лишний раз дергать базу ... в общем, не гуд
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
17 Июль, 2009, 02:13:15 , спустя 2 минуты 38 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: д-о-х-у-я! Сила слова: 1.66
|
adw0rd, ржака :) Спустя 39 секунд добавил $strings = array_map(create_function('$a', 'return $a["short"];'), $items);
$snippets = $sphinx-> BuildExcerpts($strings, "motangonews", $term, array("limit"=>SNIPPET_LEN, "before_match"=> "<strong>", "after_match"=> "</strong>"));
вот так делается это Спустя 26 секунд добавил массив строк в которых замены произвести + кейворды, остальное доп инфа
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
adw0rd ↓
|
 |
|
17 Июль, 2009, 02:19:39 , спустя 6 минут 24 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17615 Сила слова: 1.67
|
AlexB, он только хранит иды, все верно, текст он юзает для поиска... но не для результата, поэтому я тебе рекомендую юзать SphinxSE и жойнить выдачу.
вот еще почитай http://habrahabr.ru/blogs/sphinx/ Спустя 2 минуты 2 секунды добавил Нашел по запросу "highlight"
5.7.1. BuildExcerpts
Prototype: function BuildExcerpts ( $docs, $index, $words, $opts=array() )
Excerpts (snippets) builder function. Connects to searchd, asks it to generate excerpts (snippets) from given documents, and returns the results.
$docs is a plain array of strings that carry the documents' contents. $index is an index name string. Different settings (such as charset, morphology, wordforms) from given index will be used. $words is a string that contains the keywords to highlight. They will be processed with respect to index settings. For instance, if English stemming is enabled in the index, "shoes" will be highlighted even if keyword is "shoe". $opts is a hash which contains additional optional highlighting parameters:
"before_match":
A string to insert before a keyword match. Default is "<b>".
"after_match":
A string to insert after a keyword match. Default is "<b>".
"chunk_separator":
A string to insert between snippet chunks (passages). Default is " ... ".
"limit":
Maximum snippet size, in symbols (codepoints). Integer, default is 256.
"around":
How much words to pick around each matching keywords block. Integer, default is 5.
"exact_phrase":
Whether to highlight exact query phrase matches only instead of individual keywords. Boolean, default is false.
"single_passage":
Whether to extract single best passage only. Boolean, default is false.
"weight_order":
Whether to sort the extracted passages in order of relevance (decreasing weight), or in order of appearance in the document (increasing position). Boolean, default is false.
Returns false on failure. Returns a plain array of strings with excerpts (snippets) on success.
http://www.sphinxsearch.com/docs/manual-0.9.8.html#api-func-buildexcerpts
|
|
|
|
|
Записан
|
|
|
|
|
AlexB ↓
|
 |
|
17 Июль, 2009, 07:41:39 , спустя 5 часов 22 минуты
|
НЕ ХУЕТА!
ХУЕТА!
|
|
|
|