Class SearchIndexer
Base class for an Indexer of document which allow retrieving of a document given a specific pattern in roughly log(n).
Namespace: Unity.QuickSearch
Syntax
public class SearchIndexer
Constructors
SearchIndexer()
Create a new default SearchIndexer.
Declaration
public SearchIndexer()
SearchIndexer(String)
Create a new SearchIndexer.
Declaration
public SearchIndexer(string name)
Parameters
| Type | Name | Description |
|---|---|---|
| String | name | Name of the indexer |
Fields
m_ThreadAborted
Is the current indexing thread aborted.
Declaration
protected volatile bool m_ThreadAborted
Field Value
| Type | Description |
|---|---|
| Boolean |
Properties
getQueryTokensHandler
Handler used to parse and split the search query text into words. The tokens needs to be split similarly to words and properties are indexed.
Declaration
public Func<string, string[]> getQueryTokensHandler { get; set; }
Property Value
| Type | Description |
|---|---|
| Func<String, String[]> |
name
Name of the document. Generally this name is given by a user from a Unity.QuickSearch.SearchDatabase.Settings
Declaration
public string name { get; set; }
Property Value
| Type | Description |
|---|---|
| String |
skipEntryHandler
Handler used to skip some entries.
Declaration
public Func<string, bool> skipEntryHandler { get; set; }
Property Value
| Type | Description |
|---|---|
| Func<String, Boolean> |
Methods
AddExactWord(String, Int32, Int32)
Add a new word coming from a specific document to the index. The word will be added as an exact match.
Declaration
public void AddExactWord(string word, int score, int documentIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| String | word | Word to add to the index. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed word was found. |
AddNumber(String, Double, Int32, Int32)
Add a key-number value pair to the index. The key won't be added with variations.
Declaration
public void AddNumber(string key, double value, int score, int documentIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| String | key | Key used to retrieve the value. |
| Double | value | Number value to store in the index. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed value was found. |
AddProperty(String, String, Int32, Boolean, Boolean)
Add a property value to the index. A property is specified with a key and a string value. The value will be stored with multiple variations.
Declaration
public void AddProperty(string key, string value, int documentIndex, bool saveKeyword = false, bool exact = true)
Parameters
| Type | Name | Description |
|---|---|---|
| String | key | Key used to retrieve the value. |
| String | value | String value to store in the index. |
| Int32 | documentIndex | Document where the indexed value was found. |
| Boolean | saveKeyword | Define if we store this key in the keyword registry of the index. See Unity.QuickSearch.SearchIndexer.GetKeywords. |
| Boolean | exact | If true, we will store also an exact match entry for this word. |
AddProperty(String, String, Int32, Int32, Boolean, Boolean)
Add a property value to the index. A property is specified with a key and a string value. The value will be stored with multiple variations.
Declaration
public void AddProperty(string key, string value, int score, int documentIndex, bool saveKeyword = false, bool exact = true)
Parameters
| Type | Name | Description |
|---|---|---|
| String | key | Key used to retrieve the value. |
| String | value | String value to store in the index. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed value was found. |
| Boolean | saveKeyword | Define if we store this key in the keyword registry of the index. See Unity.QuickSearch.SearchIndexer.GetKeywords. |
| Boolean | exact | If true, we will store also an exact match entry for this word. |
AddProperty(String, String, Int32, Int32, Int32, Int32, Boolean, Boolean)
Add a property value to the index. A property is specified with a key and a string value. The value will be stored with multiple variations.
Declaration
public void AddProperty(string name, string value, int minVariations, int maxVariations, int score, int documentIndex, bool saveKeyword = false, bool exact = true)
Parameters
| Type | Name | Description |
|---|---|---|
| String | name | Key used to retrieve the value. |
| String | value | String value to store in the index. |
| Int32 | minVariations | Minimum number of variations to compute for the value. Cannot be higher than the length of the word. |
| Int32 | maxVariations | Maximum number of variations to compute for the value. Cannot be higher than the length of the word. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed value was found. |
| Boolean | saveKeyword | Define if we store this key in the keyword registry of the index. See Unity.QuickSearch.SearchIndexer.GetKeywords. |
| Boolean | exact | If true, we will store also an exact match entry for this word. |
AddWord(String, Int32, Int32)
Add a new word coming from a specific document to the index. The word will be added with multiple variations allowing partial search.
Declaration
public void AddWord(string word, int score, int documentIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| String | word | Word to add to the index. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed word was found. |
AddWord(String, Int32, Int32, Int32)
Add a new word coming from a specific document to the index. The word will be added with multiple variations allowing partial search.
Declaration
public void AddWord(string word, int size, int score, int documentIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| String | word | Word to add to the index. |
| Int32 | size | Number of variations to compute. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed word was found. |
AddWord(String, Int32, Int32, Int32, Int32)
Add a new word coming from a specific document to the index. The word will be added with multiple variations allowing partial search.
Declaration
public void AddWord(string word, int minVariations, int maxVariations, int score, int documentIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| String | word | Word to add to the index. |
| Int32 | minVariations | Minimum number of variations to compute. Cannot be higher than the length of the word. |
| Int32 | maxVariations | Maximum number of variations to compute. Cannot be higher than the length of the word. |
| Int32 | score | Relevance score of the word. |
| Int32 | documentIndex | Document where the indexed word was found. |
Build()
Build custom derived indexes.
Declaration
public virtual void Build()
IndexDocument(String, Boolean)
Function to override in a concrete SearchIndexer to index the content of a document.
Declaration
public virtual void IndexDocument(string document, bool checkIfDocumentExists)
Parameters
| Type | Name | Description |
|---|---|---|
| String | document | Path of the document to index. |
| Boolean | checkIfDocumentExists | Check if the document actually exists. |
IsReady()
Is the index fully built and up to date and ready for search.
Declaration
public bool IsReady()
Returns
| Type | Description |
|---|---|
| Boolean | Returns true if the index is ready for search. |
LoadBytes(Byte[], Action<Boolean>)
Load asynchronously (i.e. in another thread) the index from a binary buffer.
Declaration
public bool LoadBytes(byte[] bytes, Action<bool> finished)
Parameters
| Type | Name | Description |
|---|---|---|
| Byte[] | bytes | Binary buffer containing the index representation. |
| Action<Boolean> | finished | Callback that will trigger when the index is fully loaded. The callback parameters indicate if the loading was succesful. |
Returns
| Type | Description |
|---|---|
| Boolean | Returns false if the index is of an unsupported version or if there was a problem initializing the reading thread. |
Read(Stream, Boolean)
Read a stream and populate the index from it.
Declaration
public bool Read(Stream stream, bool checkVersionOnly)
Parameters
| Type | Name | Description |
|---|---|---|
| Stream | stream | Stream where to read the index from. |
| Boolean | checkVersionOnly | If true, it will only read the version of the index and stop reading any more content. |
Returns
| Type | Description |
|---|---|
| Boolean | Returns false if the version of the index is not supported. |
SaveBytes()
Get the bytes representation of this index. See Write(Stream).
Declaration
public byte[] SaveBytes()
Returns
| Type | Description |
|---|---|
| Byte[] | Bytes representation of the index. |
Search(String, Int32, Int32)
Run a search query in the index.
Declaration
public virtual IEnumerable<SearchResult> Search(string query, int maxScore = 2147483647, int patternMatchLimit = 2999)
Parameters
| Type | Name | Description |
|---|---|---|
| String | query | Search query to look out for. If if matches any of the indexed variations a result will be returned. |
| Int32 | maxScore | Maximum score of any matched Search Result. See score. |
| Int32 | patternMatchLimit | Maximum number of matched Search Result that can be returned. See SearchResult. |
Returns
| Type | Description |
|---|---|
| IEnumerable<SearchResult> | Returns a collection of Search Result matching the query. |
SkipEntry(String, Boolean)
Called when the index is built to see if a specified document needs to be indexed. See skipEntryHandler
Declaration
public virtual bool SkipEntry(string document, bool checkRoots = false)
Parameters
| Type | Name | Description |
|---|---|---|
| String | document | Path of a document |
| Boolean | checkRoots |
Returns
| Type | Description |
|---|---|
| Boolean | Returns true if the document doesn't need to be indexed. |
Write(Stream)
Write a binary representation of the the index on a stream.
Declaration
public void Write(Stream stream)
Parameters
| Type | Name | Description |
|---|---|---|
| Stream | stream | Stream where to write the index. |