$ cd FTServer
$ mvn package cargo:run
Введите полный URL для индексации страницы, затем выполните поиск. Переходите на следующую страницу, повторно индексируя страницу.
[Слово1 Слово2 Слово3] — текст содержит Слово1, Слово2 и Слово3.
["Слово1 Слово2 Слово3"] — текст содержит "Слово1 Слово2 Слово3" целиком.
Поиск [https] или [http] — получить почти все страницы.
Скачайте Netbeans (https://netbeans.apache.org/).
iBoxDB (http://www.iboxdb.com). Semantic-UI (http://semantic-ui.com/). Jsoup (http://jsoup.org/).
Порядок результатов основан на числе id() в классе PageText, в порядке убывания.
Страница имеет много PageTexts. Если не нужно несколько текстов, измените Html.getDefaultTexts(Page), вернув только один PageText.
Метод Page.GetRandomContent() используется для того, чтобы содержимое поисковой страницы всегда менялось, не влияя на реальный порядок PageText.
Используйте номер ID для управления порядком вместо загрузки всех страниц в память. Или загрузите первые 100 страниц в память, а затем переупорядочьте их по предпочтению.
Поиск (... Строковые ключевые слова, длинный startId, длинный count).
startId — с какого ID (ID при создании PageText) начать, используйте (startId=Long.MaxValue), чтобы читать сверху, в порядке убывания.
count — записи для чтения, важный параметр, скорость поиска зависит от этого параметра, а не от размера данных.
Установите startId как последний идентификатор из результатов поиска минус один.
startId = search( "keywords", startId, count);
nextpage_startId = startId - 1 // это «минус один» сделано внутри search()
...
//читаем следующую страницу
search("keywords", nextpage_startId, count)
В основном nextpage_startId отправляется с клиентского браузера, когда пользователь достиг конца веб-страницы, и устанавливается по умолчанию nextpage_startId=Long.MaxValue. В JavaScript большое число должно быть записано как строка ("'" + nextpage_startId + "'").
Откройте
public Page Html.get(String url);
Задайте свой собственный текст веб-сайта.
Page page = new Page();
page.url = url;
page.title = title;
page.text = replace(doc.body().text());
page... = ...
return page;
[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 ~]$ tracker daemon -k
//Удалите кэш, у него медленная БД внутри
[user@localhost ~]$ rm -rf .cache/tracker/
Остановите индексацию файлов операционной системой.
[user@localhost ~]$ sudo blockdev --report
//если Readahead(RA) больше скорости оборудования, можно установить его ниже.
//это зависит от параметров оборудования.
[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
Установите File Readahead (RA) ниже.
[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.
C# ASP.NET Core Version (https://github.com/iboxdb/ftserver-cs). FTServer для Android с APK (https://sourceforge.net/p/ftserver-android/code/).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )