@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class PhabricatorNgramsIndexEngineExtension
4 extends PhabricatorIndexEngineExtension {
5
6 const EXTENSIONKEY = 'ngrams';
7
8 public function getExtensionName() {
9 return pht('Ngrams Engine');
10 }
11
12 public function getIndexVersion($object) {
13 $ngrams = $object->newNgrams();
14 $map = mpull($ngrams, 'getValue', 'getNgramKey');
15 ksort($map);
16 $serialized = serialize($map);
17
18 return PhabricatorHash::digestForIndex($serialized);
19 }
20
21 public function shouldIndexObject($object) {
22 return ($object instanceof PhabricatorNgramsInterface);
23 }
24
25 public function indexObject(
26 PhabricatorIndexEngine $engine,
27 $object) {
28
29 foreach ($object->newNgrams() as $ngram) {
30 $ngram->writeNgram($object->getID());
31 }
32 }
33
34}