Skip to content

etakerim/geologizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web crawler geológie - Atlas hornín a minerálov

Závislosti - requests - pyspark - pylucene (Inštalácia nižšie) - pandas, pyarrow, grpcio, google, protobuf, grpcio-status? - sphinx - pytest

Najprv je treba otvoriť venv, kde sú nainštalované závislosi

workon pylucene

Spustenie crawlera (Najprv skontroluj správne nastavenie domén a pravidiel)

python geologizer.py -c 2>&1 | tee log.txt

Odstráň neplatné položky z dokument indexu

python geologizer.py -f

Spustenie na spracovanie nacrawlovaných záznamov a oprava indexu stránok

python geologizer.py -p

Zlúčenie indexu dokumentov a vytvorenie indexu termov

python geologizer.py -m -i

Full text vyhľadávanie s 10 výsledkami

python geologizer.py -q "Key words" -n 10  # Vlastný index
python geologizer.py -ql "Key words" -n 10  # Lucene

Extrahovanie wikipedie, obohatenie vlastného indexu, vyhľadávanie

python geologizer.py -p -i                           # Processing HTML a extrakcia vlastného indexu
python geologizer.py -wiki "minerals.xml" -w         # Parsovanie wiki (uloží sa do wikipedia.index.txt.dir)
# Presun spark výsledku z priečinku wikipedia.index.txt.dir do wikipedia.index.txt
python geologizer.py -e                              # Obohatenie vlastného indexu 
# Presun spark výsledku z priečinku enhanced.index.txt.dir do enhanced.index.txt

python geologizer.py -il -a         # Lucene indexovanie full text & enhanced indexu

# Lucene atribútové vyhľadávanie
python geologizer.py -ql "?# mohs-hardness-max = 5.0" -n 10 -a
# Vlastné atribútové vyhľadávanie
python geologizer.py -q "?# mohs-hardness-min > 2 AND mohs-hardness-max < 5" -n 10

PyLucene

Návod ako si nainštalovať pylucene na Manjaro Linux (Dockerfile: https://github.com/coady/docker/blob/main/pylucene/Dockerfile)

# Download Temurin JDK 17
# https://adoptium.net/temurin/releases/?version=17&package=jdk&arch=x64&os=linux
# Copy to system location and set java
sudo cp -r jdk-17-temurin /usr/lib/jvm/
sudo archlinux-java status
sudo archlinux-java set jdk-17-temurin
mkvirtualenv pylucene

# Download pylucene
mkdir pylucene && cd pylucene
curl https://downloads.apache.org/lucene/pylucene/pylucene-9.7.0-src.tar.gz | tar -xz --strip-components=1
cd jcc
NO_SHARED=1 JCC_JDK=/usr/lib/jvm/jdk-17-temurin python setup.py install
cd ..
make all install JCC='python -m jcc' PYTHON=python NUM_FILES=16

Vytvorenie indexu cez Pylucene

python geologizer.py -l

Full text vyhľadávanie s 10 výsledkami cez Pylucene

python geologizer.py -o "Key words" -n 10

Apache Spark lokálne

Docs: https://spark.apache.org/docs/1.0.0/spark-standalone.html

Stiahnutie:

wget https://www.apache.org/dyn/closer.lua/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
tar -xzf spark-3.5.0-bin-hadoop3.tgz
mv spark-3.5.0-bin-hadoop3 spark

Spustenie

spark/sbin/start-master.sh -h localhost -p 7077
spark/sbin//start-worker.sh "localhost:7077" -c 8 -m 4G

Zastavenie

spark/sbin/stop-master.sh
spark/sbin//stop-worker.sh

PySpark XML install

pyspark --master local --packages com.databricks:spark-xml_2.13:0.17.0
spark.read.format('com.databricks.spark.xml').option('inferschema', 'true').option('rowTag', 'page').load('minerals.xml')

Apache Spark w/ Docker

Install

curl -LO https://raw.githubusercontent.com/bitnami/containers/main/bitnami/spark/docker-compose.yml
docker-compose up

Start

docker-compose up --scale spark-worker=3

Pipeline

  1. Crawler ('-c', '--crawler') [save to: docbase]
    • Validate page indexes ('-f', '--fix-page-index')
  2. Document extraction ('-p', '--parse-documents') [save to: docbase-processed]
  3. Entity indexing
    • Fulltext lucene: My document base ('-l', '--lucene-index')
    • My document base: full-text & entity ('-i', '--term-index')
    • Wikipedia: entity ('-w', '--wiki-index')
  4. Enrichment of index with wikipedia ('-e', '--wiki-enrichment')
  5. Searching
    • Full text lucene: ('-o', '--lucene-query')
    • full-text & entity: ('-q', '--query')
      • Prefix '?#' for entity
      • count ('-n', '--number-of-results')

Geologický slovník

Testy

Z koreňového priečinka projektu spusti:

python -m pytest -s

About

FIIT STU - VINF project - Geology web crawler and search engine - Rocks and minerals

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published