fulltext_native
class fulltext_native extends base implements search_backend_interface
phpBB's own db driven fulltext search, version 2
Constants
SEARCH_RESULT_NOT_IN_CACHE |
|
SEARCH_RESULT_IN_CACHE |
|
SEARCH_RESULT_INCOMPLETE |
|
private BATCH_SIZE |
|
protected UTF8_HANGUL_FIRST |
|
protected UTF8_HANGUL_LAST |
|
protected UTF8_CJK_FIRST |
|
protected UTF8_CJK_LAST |
|
protected UTF8_CJK_B_FIRST |
|
protected UTF8_CJK_B_LAST |
|
Properties
protected service | $cache | from base | |
protected config | $config | from base | |
protected driver_interface | $db | from base | |
protected user | $user | from base | |
protected array | $stats | Associative array holding index stats |
|
protected array | $word_length | Associative array stores the min and max word length to be searched |
|
protected string | $search_query | Contains tidied search query. |
|
protected array | $common_words | Contains common words. |
|
protected array | $must_contain_ids | Post ids of posts containing words that are to be included |
|
protected array | $must_not_contain_ids | Post ids of posts containing words that should not be included |
|
protected array | $must_exclude_one_ids | Post ids of posts containing at least one word that needs to be excluded |
|
protected string | $phpbb_root_path | Relative path to board root |
|
protected string | $php_ext | PHP Extension |
|
protected dispatcher_interface | $phpbb_dispatcher | phpBB event dispatcher object |
|
protected language | $language |
Methods
Initialises the fulltext_native search backend with min/max word length
Retrieves cached search results
Caches post/topic ids
Removes old entries from the search results table and removes searches with keywords that contain a word in $words.
Drop fulltext index
Return the ids of the forums that have indexing enabled
Returns the name of this search backend to be displayed to administrators
Returns if the search engine is available
Method executed when a search backend is set from acp.
Returns the search_query
Returns the common_words array
Returns the word_length array
Splits keywords entered by a user into an array of words stored in $this->split_words This function fills $this->search_query with the cleaned user search query
Performs a search on keywords depending on display specific params. You have to run split_keywords() first
Performs a search on an author's posts without caring about message contents. Depends on display specific params
Returns if phrase search is supported or not
Updates wordlist and wordmatch tables when a message is posted or changed Destroys cached search results, that contained one of the new words in a post so the results won't be outdated
Destroy cached results, that might be outdated after deleting a post
Destroy old cache entries
Returns true if both FULLTEXT indexes exist
Returns an associative array containing information about the indexes
Computes the stats and store them in the $this->stats associative array
Split a text into words of a given length
Clean up a text to remove non-alphanumeric characters
Display various options that can be configured for the backend from the acp
Details
at line 112
__construct(config $config, driver_interface $db, dispatcher_interface $phpbb_dispatcher, language $language, user $user, string $phpbb_root_path, string $phpEx)
Initialises the fulltext_native search backend with min/max word length
in
base at line 82
protected int
obtain_ids(string $search_key, int $result_count, array $id_ary, int $start, int $per_page, string $sort_dir)
Retrieves cached search results
in
base at line 161
protected void
save_ids(string $search_key, string $keywords, array $author_ary, int $result_count, array $id_ary, int $start, string $sort_dir)
Caches post/topic ids
in
base at line 271
protected void
destroy_cache(array $words, array|bool $authors = false)
Removes old entries from the search results table and removes searches with keywords that contain a word in $words.
in
base at line 324
array|null
create_index(int $post_counter = 0)
Create fulltext index
at line 1599
array|null
delete_index(int $post_counter = null)
Drop fulltext index
in
base at line 425
protected array
forum_ids_with_indexing_enabled()
Return the ids of the forums that have indexing enabled
in
base at line 451
protected Generator
get_posts_batch_after(int $post_id)
Get batch of posts after id
in
base at line 470
protected int
get_max_post_id()
Get post with higher id
in
base at line 484
string
get_type()
Gets backend class
at line 137
string
get_name()
Returns the name of this search backend to be displayed to administrators
at line 145
bool
is_available()
Returns if the search engine is available
at line 153
string|false
init()
Method executed when a search backend is set from acp.
Checks permissions and paths, if everything is correct it generates the config file
at line 161
string
get_search_query()
Returns the search_query
at line 169
array
get_common_words()
Returns the common_words array
at line 177
array|false
get_word_length()
Returns the word_length array
at line 185
bool
split_keywords(string $keywords, string $terms)
Splits keywords entered by a user into an array of words stored in $this->split_words This function fills $this->search_query with the cleaned user search query
If $terms is 'any' then the words will be extracted from the search query and combined with | inside brackets. They will afterwards be treated like an standard search query.
Then it analyses the query and fills the internal arrays $must_not_contain_ids, $must_contain_ids and $must_exclude_one_ids which are later used by keyword_search()
at line 517
bool|int
keyword_search(string $type, string $fields, string $terms, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array $id_ary, int $start, int $per_page)
Performs a search on keywords depending on display specific params. You have to run split_keywords() first
at line 992
bool|int
author_search(string $type, bool $firstpost_only, array $sort_by_sql, string $sort_key, string $sort_dir, string $sort_days, array $ex_fid_ary, string $post_visibility, int $topic_id, array $author_ary, string $author_name, array $id_ary, int $start, int $per_page)
Performs a search on an author's posts without caring about message contents. Depends on display specific params
at line 1280
bool
supports_phrase_search()
Returns if phrase search is supported or not
at line 1288
index(string $mode, int $post_id, string $message, string $subject, int $poster_id, int $forum_id)
Updates wordlist and wordmatch tables when a message is posted or changed Destroys cached search results, that contained one of the new words in a post so the results won't be outdated
at line 1477
void
index_remove(array $post_ids, array $author_ids, array $forum_ids)
Destroy cached results, that might be outdated after deleting a post
at line 1534
void
tidy()
Destroy old cache entries
at line 1645
bool
index_created()
Returns true if both FULLTEXT indexes exist
at line 1658
array|false
index_stats()
Returns an associative array containing information about the indexes
at line 1673
protected
get_stats()
Computes the stats and store them in the $this->stats associative array
at line 1690
protected array
split_message(string $text)
Split a text into words of a given length
The text is converted to UTF-8, cleaned up, and split. Then, words that conform to the defined length range are returned in an array.
NOTE: duplicates are NOT removed from the return array
at line 1767
protected string
cleanup(string $text, string $allowed_chars = null, string $encoding = 'utf-8')
Clean up a text to remove non-alphanumeric characters
This method receives a UTF-8 string, normalizes and validates it, replaces all non-alphanumeric characters with strings then returns the result.
Any number of "allowed chars" can be passed as a UTF-8 string in NFC.
at line 1993
array
get_acp_options()
Display various options that can be configured for the backend from the acp