By the way,
I realize today that since you removed the legends from config, I is
becoming very useful to write on the info page a line like legend: part1 |
part2 | part3
... but won't it get erased on pages such as index.game everytime we
rebuild an index from scratch? Maybe for Boltwire 6 (whoa already planning
Boltwire 6 when Boltwire 5 was released not so long ag ! It's amazing to
see so many things moving forward and going well for Boltwire!), but I
could be neat to creation of indexing a way to specify a legend to write in
the index file. If data vars are indexed, I would propose to directly reuse
the "legends" parameter of the search function.
What do you think?
Tiffany
Le lundi 11 janvier 2016 18:48:35 UTC+1, Tiffany Grenier a écrit :
>
> Thanks for your quick answer, and the extensive explanation.
>
> It appears I did not understand at all how the cron indexing was working.
> I like your suggestion of reindexing only changes pages with [(index
> list=game)] and automatically indexing from the last indexing time only.
> Then it would probably be enough to delete site.index.game to force a full
> indexing (not only from last indexing time).
>
> I would enjoy such features very much in the next release, or even one
> later. I have something working well for now, so this is not urgent.
>
> Cheers,
> Tiffany
>
> Le lundi 11 janvier 2016 16:03:42 UTC+1, Dan a écrit :
>>
>> Ok, I understand what you are saying now. And I note I didn't answer your
>> question, either...
>>
>> So here's the general way indexing is supposed to work as I remember it:
>>
>> 1) If you set indexing to cron in site.config, changed pages get logged
>> on page site.index.cron--and the pages are NOT indexed. You then HAVE TO
>> use a cron job to call some public page you create with the index function
>> on it. Otherwise nothing will happen. The idea of this is to completely
>> avoid page lags when you link indexing to page views.
>>
>> 2) Depending on the parameters you put on the cron index function several
>> things could happen:
>>
>> [(index)] -- nothing happens. no pages specified
>> [(index cron=10)] -- index 10 pages on site.index.cron. They will be
>> checked for all matching rules
>> [(index page.1,page.2,page.3)] -- index the 3 specified pages. They will
>> be checked for all matching rules
>> [(index rule=game)] -- indexes 25 (indexBatch) pages on the
>> site.index.game list using the game rule defined on site.index
>>
>> Now the auto indexing feature, if set to cron will never populate pages
>> like site.index.game. It only populates site.index.cron. Nor will it catch
>> pages changes by ftp. So yes, you do need to use the action.index script to
>> populate them. Using BoltWire's script capabilities to do that via a cron
>> job was brilliant. Never would have thought of doing that.
>>
>> Having said that, I see the merit in allowing a batch parameter in the
>> index function to optionally override the default setting. So [(index
>> rule=game batch=10)] should be able to overrule the default site.config
>> setting of 25. This is easily done by making these changes:
>>
>> Change the first line of BOLTFindex to
>> if ($args['rule'] != '') $out = BOLTindex($args['rule'], $args['batch']);
>>
>> Change the first two lines of BOLTindex to
>> function BOLTindex($rule='', $batch='') {
>> $batch = BOLTinit(BOLTconfig('indexBatch', 25), $batch);
>>
>> Another problem that occurs to me reflecting on all this is [(index)]
>> should default to the equivalent of cron=indexBatch. This requires a slight
>> rewrite of the index function. It also has the added advantage that you can
>> do [(index 10)] and it is the equivalent of [(index cron=10)]. I plan to
>> include the changes above and below to the next release, unless you see
>> some reason not to.
>>
>> function BOLTFindex($args) {
>> if ($args['rule'] != '') $out = BOLTindex($args['rule'], $args['batch']);
>> // works through a rule if no list
>> else {
>> $count = BOLTinit(BOLTconfig('indexBatch', 25), $args[1], $args['cron']);
>> if (is_number($count)) {
>> $cron = BOLTinit('site.index.cron', BOLTconfig('cronIndex'));
>> $content = trim(BOLTloadpage($cron));
>> if ($content == '') return BOLTmessage('index_current', $args);
>> $pages = explode("\n", $content);
>> $pages = array_unique($pages);
>> if (count($pages) > $count) {
>> $list = array_slice($pages, 0, $count);
>> $content = implode("\n", array_slice($pages, $count));
>> }
>> else {
>> $list = $pages;
>> $content = ' ';
>> }
>> BOLTsavepage($cron, $content);
>> }
>> else {
>> if ($count == '') return BOLTmessage('index_empty', $args);
>> $list = explode(',', $count);
>> }
>> $out = BOLTindexAuto($list); // indexes pages
>> }
>> BOLTmessage('index_complete', $args);
>> return $out;
>> }
>>
>> Ok, now for the big question--the problem you actually raised. How do I
>> automatically index changed pages which I have uploaded by ftp or via some
>> custom rule? Your answer is the right one of course. But it might be
>> possible to simplify it further by creating a plugin, or extending the
>> index function. Here's what I envision:
>>
>> 1) Either call it [(indexer rule=game)] or perhaps [(index list=game)].
>> The first is a plugin, the latter an extension of the core. Either way,
>> this tells BoltWire to create an updated list for the specified rule.
>> 2) The script simply looks up the rule, generates a pagelist based on the
>> rule parameters, and appends it to page site.index.game.
>> 3) To be really smart, we would somehow record the last time that rule
>> was "listed" and only include pages changes since then.
>>
>> If we could get #3 to work well, we could make this happen automatically
>> anytime you call [(index rule=game)] before starting the indexing process.
>> That way it just works. As for accomplishing #3, I propose saving the
>> last listed date as an info var hidden in a data var on site.index. It
>> might be a bit tricky as I suspect there could be situations where you miss
>> pages--but can't think of any. We could also always use the action index
>> anytime we wanted to reindex an entire group of pages.
>>
>> I'm sure I could pull this together in 10 or 15 minutes. Will wait for
>> your response to see if you have any thoughts or feedback?
>>
>> Cheers,
>> Dan
>>
>> On Sun, Jan 10, 2016 at 2:34 AM Tiffany Grenier <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>> About the cron, I checked the BOLTFindex function, and it goes as
>>> follows:
>>> if ($args['rule'] != '') $out = BOLTindex($args['rule']); // works
>>> through a rule if no list
>>> else {
>>> if (is_number($args['cron'])) {
>>> So I don't see how rule and cron could be used at the same time...
>>>
>>> In the end, I created several cron commands to page
>>> action.index&rule=rule1, action.index&rule=rule2 etc. The current rate is
>>> one every two minutes, each every twenty minutes (yes, I have quite a
>>> number of indexes). It works fine, using the default indexBatch value and
>>> updating the list of pages to be indexed everytime a change is made on the
>>> website by members.
>>> I also added a "buildIndexes" script that I included with all the rules
>>> on a page I visit whenever I do massive changes from the FTP interface.
>>> Then I just have to way that the whole indexing has been processed by my
>>> index cron rules. If I know I will change main pages on a regular basis
>>> (use page not relevant at the moment, but you never know), I can also
>>> create a cron rule for this page. It spares me the necessity of login in
>>> and clicking my way through all indexes in action.index without starting
>>> the indexing process.
>>> It is a simple copy from tha action.index indexing building form, and
>>> goes as follows (although I don't think it could be of use for anyone else):
>>> code.script.inde
>>> authkey: indexing
>>> source: 'site.index::{?build}'
>>> reset: search='{=source} fmt=list count=false dir=pages'
>>> search:
>>> [if set {?build}]edit: content='{=search}' page='site.index.{?build}'[if
>>> ]
>>> That's it,
>>> Cheers,
>>> Tiffany/Maelite
>>>
>>>
>>>
>>>
>>>
>>> Le jeudi 7 janvier 2016 19:42:13 UTC+1, Dan a écrit :
>>>
>>>> Thank you!. I fixed the typo, and moved the messages you indicated to
>>>> site.messages.
>>>>
>>>> As for #3, I believe you can use the cron parameter to do the
>>>> equivalent. Batch is probably a better word, but I'm not sure the change
>>>> is
>>>> worth the disruption...
>>>>
>>>> [(index rule=site cron={?quantity})]
>>>>
>>>> Cheers,
>>>> Dan
>>>>
>>>>
>>>>
>>>> On Tue, Jan 5, 2016 at 2:57 AM Tiffany Grenier <[email protected]>
>>>> wrote:
>>>>
>>> Hi,
>>>>>
>>>>> 3 quick notes regarding indexing:
>>>>>
>>>>> - I just noticed a typo in BOLTindex:
>>>>> if ($myrule == '') return "Index rule //$myrule// not found";
>>>>> should be
>>>>> if ($myrule == '') return "Index rule //$rule// not found";
>>>>> Otherwise this warning gives no info at all...
>>>>> - Also, I think the "Indexing is current" and "No pages to index"
>>>>> warnings should be localized and moved to site.messages.
>>>>> - And lastly, a small question: if I define 3 indexing rules and
>>>>> set indexing to cron, nothing will happen, right? If so, could you
>>>>> please
>>>>> add a "batch" parameter to the indexing function such that I can put
>>>>> in
>>>>> cron.index (which is visited through a cron job):
>>>>> [(index rule=site batch={?quantity})]
>>>>> [(index rule=game batch={?quantity})]
>>>>> [(index rule=memberstats batch={?quantity})]
>>>>> I know it will kind of do that automaticaly everytime a page is
>>>>> modified in the website, but i just modified a whole bunch of pages
>>>>> through
>>>>> FTP and it's a real pain to re-index it all manually... I am heavily
>>>>> using
>>>>> content of index.game and index.memberstats and need them up-to-date
>>>>> the
>>>>> fastest way possible.
>>>>>
>>>>> Cheers,
>>>>> Tiffany
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "BoltWire" group.
>>>>>
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>
>>>>
>>>>> Visit this group at https://groups.google.com/group/boltwire.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "BoltWire" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at https://groups.google.com/group/boltwire.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"BoltWire" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/boltwire.
For more options, visit https://groups.google.com/d/optout.