-
Notifications
You must be signed in to change notification settings - Fork 10
FulltextSearch
In order to support the natural language search for tons of text contents, we call
String table = "sales";
String column = "feedback";
db_instance.getTable(table).addFulltextSearchable(column);
Then records that contain the column data will be indexed.
The query language introduced by LunarBase is quite similar to the counterpart of Mysql:
String table = "sales";
String query = "feedback against(\" keyword1, keyqord2 + keyword3\")";
FTQueryResult result = l_db.queryFullText(table, query);
if(result.resultCount() == 0)
{
System.out.println("no results found");
l_db.closeDB();
return;
}
int top_n =1000;
ArrayList<Record32KBytes> recs = result.fetchRecords(top_n);
for(int i=0 ;i<recs.size() ;i++)
{
System.out.println(recs.get(i).getID() + ": "+recs.get(i).recData());
}
Where against is the reserved keyword of the query grammar. Comma(,), space, and plus(+) stand for the binary logical relationship among keywords respectively as: or, or, and.
The search results is kept in an object of FTQueryResult , whose major interfaces are:
resultCount(): how many results falling into the range;
fetchRecords(): get all the results as a list;
fetchRecords(int top_n): get the top n results;
fetchRecords(int from, int count): paging the results, for rendering them on each page of screen;
For natural languages other than English, user shall implement its own tokenizer that parses the text into entities, words, names etc. Following this complete example of full-text search to learn how to do it.
1 Home
1.1 summary
1.2 System Preparation
1.3 When LunarBase is your best choice
1.4 Benchmark
1.5 Power consumption
2 Data Model And Process
2.1 Why internal big cache
2.2 Memory Management: LunarMMU
2.3 Garbage Collection
2.4 Transaction Log
2.5 JOIN via materialized view
3 Real Time Computation: LunarMax
3.1 In-Memory File System: Memory Estimation
3.2 Configuration
3.3 Use SSD as a cheaper memory
3.4 Data Safety
3.5 HE Server VS. Cluster
3.6 High Availability
4 Create a database
4.1 Three modes
4.2 creation.conf settings
4.3 Table space
4.4 Multiple Instance
4.5 Database Status
4.6 Remove and Restore a table
5 Insertion
5.1 Insert as normal record
5.2 Insert to search engine
6 Query
6.1 Point Query
6.2 Result Handler: register your own event handler
6.3 Interpreter Pattern: complex query conditions
6.4 Range Query
6.5 Full-text Search
6.6 Algebraic Logical Query
8 Deletion
9 Materialized view
9.1 Eventual consistency
9.2 Update
9.3 MVCC in LunarBase
9.4 Easy JOIN via denormalization
9.5 CRUD in view
10 Distributed integration with
10.1 Kafka
10.2 Storm
10.3 Spark
11 Storage: Lunar Virtual File System
13 Roadmap of LunarBase future
15 FAQ