All Projects → iboxdb → Ftserver Cs

iboxdb / Ftserver Cs

Lightweight iBoxDB Full Text Search Server for C#

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Ftserver Cs

Ftserver
Lightweight Embeddable iBoxDB Full Text Search Server for Java
Stars: ✭ 219 (+170.37%)
Mutual labels:  full-text-search, database, nosql, document-database
Ravendb
ACID Document Database
Stars: ✭ 2,870 (+3443.21%)
Mutual labels:  database, nosql, document-database
Arangodb
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Stars: ✭ 11,880 (+14566.67%)
Mutual labels:  database, nosql, document-database
Tiedot
A rudimentary implementation of a basic document (NoSQL) database in Go
Stars: ✭ 2,643 (+3162.96%)
Mutual labels:  database, nosql, document-database
Orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. OrientDB Community Edition is Open Source using a liberal Apache 2 license.
Stars: ✭ 4,394 (+5324.69%)
Mutual labels:  database, nosql, document-database
Xodus
Transactional schema-less embedded database used by JetBrains YouTrack and JetBrains Hub.
Stars: ✭ 864 (+966.67%)
Mutual labels:  database, nosql
Mongodb Interview Questions
MongoDB Interview Questions
Stars: ✭ 31 (-61.73%)
Mutual labels:  database, document-database
Iotdb
Apache IoTDB
Stars: ✭ 1,221 (+1407.41%)
Mutual labels:  database, nosql
Couchdb Net
EF Core-like CouchDB experience for .NET!
Stars: ✭ 50 (-38.27%)
Mutual labels:  database, nosql
Redis Marshal
Lightweight Redis data exploration tool
Stars: ✭ 16 (-80.25%)
Mutual labels:  database, nosql
Cosyan
Transactional SQL based RDBMS with sophisticated multi table constraint logic.
Stars: ✭ 45 (-44.44%)
Mutual labels:  database, nosql
Java Client Api
Java client for the MarkLogic enterprise NoSQL database
Stars: ✭ 52 (-35.8%)
Mutual labels:  database, nosql
Walrus
Lightweight Python utilities for working with Redis
Stars: ✭ 846 (+944.44%)
Mutual labels:  full-text-search, database
Redix
a persistent real-time key-value store, with the same redis protocol with powerful features
Stars: ✭ 907 (+1019.75%)
Mutual labels:  database, nosql
Keyvast
KeyVast - A key value store
Stars: ✭ 33 (-59.26%)
Mutual labels:  database, nosql
Storagedone Android
Kotlin library to make easy using local document-oriented database in Android apps.
Stars: ✭ 18 (-77.78%)
Mutual labels:  database, nosql
Nsdb
Natural Series Database
Stars: ✭ 49 (-39.51%)
Mutual labels:  database, nosql
Nodbi
Document DBI connector for R
Stars: ✭ 56 (-30.86%)
Mutual labels:  database, nosql
Nodejs Driver
DataStax Node.js Driver for Apache Cassandra
Stars: ✭ 1,074 (+1225.93%)
Mutual labels:  database, nosql
Couchbase Lite C
C language bindings for the Couchbase Lite embedded NoSQL database engine
Stars: ✭ 58 (-28.4%)
Mutual labels:  database, nosql

Lightweight Full Text Search Server for CSharp

Setup

Download Project
cd FTServer
dotnet run -c Release

Dependencies

iBoxDB

AngleSharp

Semantic-UI

The Results Order

The results order based on the id() number in class PageText, descending order.

A Page has many PageTexts. if don't need multiple Texts, modify Html.getDefaultTexts(Page), returns only one PageText.

the Page.GetRandomContent() method is used to keep the Search-Page-Content always changing, doesn't affect the real PageText order.

Use the ID number to control the order instead of loading all pages to memory. Or load top 100 pages to memory then re-order it by favor.

Search Format

[Word1 Word2 Word3] => text has Word1 and Word2 and Word3

["Word1 Word2 Word3"] => text has "Word1 Word2 Word3" as a whole

Search [https http] => get almost all pages

Search Method

search (... String keywords, long startId, long count)

startId => which ID(the id when you created PageText) to start, use (startId=Long.MaxValue) to read from the top, descending order

count => records to read, important parameter, the search speed depends on this parameter, not how big the data is.

Next Page

set the startId as the last id from the results of search minus one

startId = search( "keywords", startId, count);
nextpage_startId = startId - 1 // this 'minus one' has done inside search()
...
//read next page
search("keywords", nextpage_startId, count)

mostly, the nextpage_startId is posted from client browser when user reached the end of webpage, and set the default nextpage_startId=Long.MaxValue, in javascript the big number have to write as String ("'" + nextpage_startId + "'")

Private Server

Open

public Page Html.Get(String url);

Set your private WebSite text

Page page = new Page();
page.url = url;
page.title = title;
page.text = bodyText
page... = ...
return page;

Maximum Opened Files

[[email protected] ~]$ cat /proc/sys/fs/file-max
803882
[[email protected] ~]$ ulimit -a | grep files
open files                      (-n) 500000
[[email protected] ~]$  ulimit -Hn
500000
[[email protected] ~]$ ulimit -Sn
500000
[[email protected] ~]$ 


$ vi /etc/security/limits.conf
*         hard    nofile      500000
*         soft    nofile      500000
root      hard    nofile      500000
root      soft    nofile      500000

Tools

Linux + ASP.NET Core

More

Transplant from Full Text Search Java JSP Version

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].