search_log не фильтрует должным образом

Post Reply
Nikso
Posts: 582
Joined: Tue Mar 05, 2013 3:59 am

search_log не фильтрует должным образом

Post by Nikso »

Шаблон

Code: Select all

<h3>search_log num=1-10 order=hits</h3>
<search_log num=1-10 order=hits><!--SEARCH_QUERY--> || </search_log>
<br><br>

<h3>search_log num=1-10 order=easy_random</h3>
<search_log num=1-10 order=easy_random><!--SEARCH_QUERY--> || </search_log>
<br><br>

<h3>search_log num=1-10 order=easy_random filter=GET_search_filter</h3>
<search_log num=1-10 order=easy_random filter=GET_search_filter><!--SEARCH_QUERY--> || </search_log>
<br><br>

<h3>search_log num=1-10 order=easy_random filter=GET_search_filter search_query_limit=GET_search_query_limit</h3>
<search_log num=1-10 order=easy_random filter=GET_search_filter search_query_limit=GET_search_query_limit><!--SEARCH_QUERY--> || </search_log>
<br><br>
В базе серчлога 2млн записей с фильтрами по странам sex(ru) sex(de)


1. вызов ?skip_cache=true&force_template=test
1. выдает только одну запись - не верно
2. 10 записей в случайном порядке - верно
3. 10 записей в случайном порядке - верно
4. 10 записей в случайном порядке - верно

2. вызов ?skip_cache=true&force_template=test&search_filter=skirt
1. выдает только одну запись - не верно
2. 10 записей в случайном порядке - верно
3. 1 запись со словом skirt, в базе их много - не верно
4. 1 запись со словом skirt, в базе их много - не верно

3. вызов ?skip_cache=true&force_template=test&search_filter=skirt&search_query_limit=ru
1. выдает только одну запись - не верно
2. 10 записей в случайном порядке - верно
3. 1 запись со словом skirt, в базе их много - не верно
4. 1 запись со словом skirt, в базе их много - не верно
смена search_query_limit на другие языки не меняет вывод. хотя в базе для них записи разные


Где и как посмотреть скинул в личку...
admin
Site Admin
Posts: 37247
Joined: Wed Sep 10, 2008 11:43 am

Re: search_log не фильтрует должным образом

Post by admin »

1. вызов ?skip_cache=true&force_template=test
1. выдает только одну запись - не верно
проблема следующая: в базе масса записей типа

search1|en
search1|de
search1|lt
search1|es

и тп

если не указывать уникальность search1 то выводит то по факту находит первые search1 много раз
если считать уникальность что б выводить как надо - получается очень тяжелый запрос
если добавить search_query_limit который у вас к каждому запросу то будет уникально и быстро

какой вариант делаем ?
2. вызов ?skip_cache=true&force_template=test&search_filter=skirt
1. выдает только одну запись - не верно
2. 10 записей в случайном порядке - верно
3. 1 запись со словом skirt, в базе их много - не верно
4. 1 запись со словом skirt, в базе их много - не верно
2. вызов ?skip_cache=true&force_template=test&search_filter=skirt
1. выдает только одну запись - не верно - это в выше
3. 1 запись со словом skirt, в базе их много - не верно

в индексировании сфинкса

Code: Select all

FROM rot_search_queries WHERE hits > 0
те что бы базе были только те по которым реально искали, можно убрать это и будет показывать все

те должно получится

Code: Select all

	sql_query				= SELECT sq_id, search_query, search_query_limit, hits, items_found FROM rot_search_queries  GROUP BY search_query, search_query_limit 

	sql_attr_uint		    = hits
	sql_attr_uint		    = items_found
	sql_attr_string			= search_query_limit
3. вызов ?skip_cache=true&force_template=test&search_filter=skirt&search_query_limit=ru

1. выдает только одну запись - не верно
2. 10 записей в случайном порядке - верно
3. 1 запись со словом skirt, в базе их много - не верно
4. 1 запись со словом skirt, в базе их много - не верно
это тоже связано с описанным выше

надо

1. провести ап
2. переиндексировать сфинкс с новой строкой
Don't forget to run script update
Post Reply