cdramey
/
tidx
Archived
1
0
Fork 0
This repository has been archived on 2021-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
tidx/README.md

79 lines
2.5 KiB
Markdown
Raw Normal View History

Tidx
====
Tidx is a simple Javascript full text indexing library. Tidx is
BSD licensed.
basic usage
-----------
First, create a new Tidx object:
var idx = new Tidx();
Next, add your data to the index with the index function:
idx.index(true, 1, 'Name', 'John D. Smith');
The index function accepts four arguments: The first is a boolean
which is if the data to be added to the index should be tokenized (that is,
broken down into discrete searchable terms), the second is the unique
identifier for the data (which will be returned when you search), a field
name associated with the data (or null if you don't have a field) and the
value you wish to add to the index. In the above example, since we've enabled
tokenization, the value would be indexed as three terms "john", "d" and
"smith".
Searching your index is easy:
var results = idx.search(true, 'john');
The search function accepts two arguments: A boolean argument of true
if you wish your search terms to be logically conjuct (as if connected
by AND) or false if you want your terms to be logically disjunct (as if
connected by OR). The second argument is your search terms. The search
function supports multiword terms when surrounded by quotes "John Smith",
and fields can be specified by name if using a semi-colon (e.g. "name:john")
The returned results of the search function is an array of IDs ordered by
frequency of terms from your search.
Fully functional examples of usage can be found in the examples directory.
advanced usage
--------------
Tidx also supports chaining searches together. This is useful in instances
where you may have multiple points of entry for a single search, and the
results should be an aggregate of each. After your index is initialized
and data has been added (see above), you can then search it using raw_search:
var raw_results = {};
var term_count = idx.raw_search('John', raw_results);
Additional searches may then be added in the same way:
term_count += idx.raw_search('Smith', raw_results);
Field specific, single term scans may also be included:
term_count += idx.field_scan('Name', 'David', raw_results);
Finally, the results can be ordered and filtered:
var results = idx.order(raw_results, term_count);
If you'd like the results of your search terms to be logically conjunct
(as if connected by AND), specific the term count you collected from search.
If you'd like them to be logically disjunct (as if connected by OR), specify
a term count of zero.