Instale Java 8+
Instale o Maven 3+
Baixe este projeto.
Correr
$ cd FTServer
$ mvn package cargo:run
Abra http://127.0.0.1:8088/
Pressione [Ctrl-C] para parar o contêiner
Insira um URL completo para indexar a página e pesquise.
Avance a página reindexando-a.
[Word1 Word2 Word3] => texto tem Word1 e Word2 e Word3
["Word1 Word2 Word3"] => o texto tem "Word1 Word2 Word3" como um todo
Pesquise [https] ou [http] => obtenha quase todas as páginas
Baixar Netbeans
iBoxDB
UI semântica
Jsopa
A ordem dos resultados com base no número id() na classe PageText , em ordem decrescente.
Uma página possui muitos PageTexts. se não precisar de vários textos, modifique Html.getDefaultTexts(Page) , retorna apenas um PageText (apenas o texto de descrição da página, Config.DescriptionOnly=true ).
o método Page.GetRandomContent() é usado para manter o Search-Page-Content sempre mudando, não afeta a ordem real do PageText.
Use o número de ID para controlar a ordem em vez de carregar todas as páginas na memória.
pesquisa (... Palavras-chave de string, startId longo, contagem longa)
startId => qual ID (o ID quando você criou o PageText) para iniciar, use (startId=Long.MaxValue) para ler de cima para baixo, em ordem decrescente
contagem => registros para ler, parâmetro importante , a velocidade de pesquisa depende deste parâmetro, não do tamanho dos dados.
defina o startId como o último ID dos resultados da pesquisa menos um
startId = search ( "keywords" , startId , count );
nextpage_startId = startId - 1 // this 'minus one' has done inside search()
...
//read next page
search ( "keywords" , nextpage_startId , count )
principalmente, o nextpage_startId é postado no navegador do cliente quando o usuário chega ao final da página da web e define o nextpage_startId = Long.MaxValue padrão, em javascript o grande número deve ser escrito como String ("'" + nextpage_startId + "'")
Abrir
public Page Html . get ( String url );
Defina o texto privado do seu site
Page page = new Page ();
page . url = url ;
page . title = title ;
page . text = replace ( doc . body (). text ());
page ... = ...
return page ;
Configurando a memória JVM em FTServer/.mvn/jvm.config , o padrão é 4 GB.
Configurando o cache somente leitura do índice (Readonly_MaxDBCount) de FTServer/src/main/java/ftserver/Config.java .
Por que o Tracker consome recursos do meu PC?
[user@localhost ~ ]$ tracker daemon -k
[user@localhost ~ ]$ rm -rf .cache/tracker/
[user@localhost ~ ]$ cat /proc/sys/fs/file-max
803882
[user@localhost ~ ]$ ulimit -a | grep files
open files (-n) 500000
[user@localhost ~ ]$ ulimit -Hn
500000
[user@localhost ~ ]$ ulimit -Sn
500000
[user@localhost ~ ]$
$ vi /etc/security/limits.conf
* hard nofile 500000
* soft nofile 500000
root hard nofile 500000
root soft nofile 500000
[user@localhost ~ ]$ sudo blockdev --report
//if Readahead(RA) bigger than hardware speed, can set it lower.
//it depends on hardware parameters.
[user@localhost ~ ]$ sudo blockdev --setra 128 /dev/sda
[user@localhost ~ ]$ sudo blockdev --setra 128 /dev/dm-0
[user@localhost ~ ]$ sudo blockdev --setra 128 /dev/dm-1
[user@localhost ~ ]$ lsblk -o NAME,RA
[user@localhost ~ ]$ free -m
[user@localhost ~ ]$ sudo sysctl vm.drop_caches=3
[user@localhost ~ ]$ firewall-cmd --add-port=8088/tcp --permanent
//Java 11 Version
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
//Java 18 Version
export JAVA_HOME=/home/user/Downloads/jdk-18.0.1.1
//Java 21 Version
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-21.0.2.0.13-1.el9.x86_64
$ alternatives --config java
Versão principal do ASP.NET C#
FTServer para Android com APK