Page MenuHomePhabricator

Build a prototype fulltext engine ("Ferret") using only basic MySQL primitives
ClosedPublic

Authored by epriestley on Aug 28 2017, 9:35 PM.
Tags
None
Referenced Files
F13292441: D18484.id44403.diff
Wed, Jun 5, 3:21 AM
F13285281: D18484.id.diff
Mon, Jun 3, 6:18 PM
F13278825: D18484.diff
Sat, Jun 1, 5:34 AM
F13275348: D18484.diff
Fri, May 31, 4:41 AM
F13261446: D18484.diff
Mon, May 27, 1:03 AM
F13245319: D18484.diff
Thu, May 23, 5:56 AM
F13195647: D18484.diff
Sun, May 12, 10:32 PM
F13178368: D18484.diff
May 8 2024, 8:22 PM
Subscribers
None

Details

Summary

Ref T12819. I gave this stuff a sweet code name because all the terms related to "fulltext" and "search" already mean 5 different things. It, uh, ferrets out documents for you?

I'm building this to work a lot like the existing ngram index, which seems to work pretty well. If this sticks, it will auto-resolve the join issue (in T12443) by letting us do the entire thing locally in a JOIN and thus dodge a lot of mess.

This index gets built alongside other indexes, but only shows up in the UI if you have prototypes enabled. If you do, it appears under the existing fulltext field in Maniphest. No existing functionality is affected or disrupted.

NOTE: The query engine half of this is still EXTREMELY primitive, and this probably performs worse than the existing field for now. If this doesn't show obvious signs of being awful on secure I'll improve that in followup changes.
Test Plan

Indexed my tasks, ran some simple queries, got the results I wanted, even for queries "ko", "k", "v0.1".

Screen Shot 2017-08-28 at 2.26.28 PM.png (740×434 px, 54 KB)

Diff Detail

Repository
rP Phabricator
Branch
ferret1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 18190
Build 24458: Run Core Tests
Build 24457: arc lint + arc unit