This Repository includes the frontend,backend implementation for a search query. After configuring the elasticsearch, the sample search engine is used to try the query searches.
├── analyzers : Custom filters (Stemmers/stoppingwords,synonyms)
├── corpus : Modified data from the pre-processed data from actual (corpus)
├── templates : The resultpage for UI (of Flask)
├── app.py : Flask backend to have transaction with ElasticSearch APIs
├── preprocesspy : Python file corpus data to elasticsearch input data format
├── query.py : ElasticSearch search queries inclusive of advanced queries, aggreagtions and textmining
├── data_scraper.py : Python file to scrape the data from the website
├── static: contain front-end files
- Install ElasticSearch
- Install packages
pip install -r requirements.txt
- Add 'analyze' folder in config of Elasticsearch and add files from analyzers
- Run ElasticSearch
- Add index(uncomment indexing part if not manually added) and add data (
processed_review_bulk.json
) - Go to http://localhost/5000/
- Enter keyword for search
- For advanced queries try the postman queries collection from postman or browser (Samples below)
- Can search for lyrics if you just know movie/year/singer/lyricist/genre.
E.g.- "நெல்சன்"
{
"query": {
"query_string": {
"query":"நெல்சன்"
}
}
}
- Can search specifying the field when you just know திரைப்படம், இயக்குனர், விமர்சனம், தீர்ப்பு, மதிப்பீடு, வெளியிடப்பட்ட தேதி.
E.g.- "இயக்குனர் நெல்சன்"
{
"query" : {
"match" : {
"இயக்குனர்" : "நெல்சன்"
}
}
}
- Can search with WildCard when not so sure of spell
E.g.- "நெல்*" for "நெல்சன்"
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "நெல்*",
"fields": ["திரைப்படம்", "இயக்குனர்", "விமர்சனம்", " தீர்ப்பு", "மதிப்பீடு",
" வெளியிடப்பட்ட தேதி"]
}
}
]
}
}
- Can search when you think one term might show up in multiple fields
E.g.- "செல்வராகவன்"
{
"query": {
"multi_match": {
"query": "செல்வராகவன்",
"fields": ["திரைப்படம்", "இயக்குனர்", "விமர்சனம்", " தீர்ப்பு", "மதிப்பீடு", " வெளியிடப்பட்ட தேதி"],
"operator": operator,
"type": "best_fields"
}
}
}
- Can search for best director or best movie where Top is marked on "மதிப்பீடு" (rating)
E.g. - மிகச்சிறந்த திரைப்படங்கள்
"sort": [
{"மதிப்பீடு.keyword": {"order": "desc"}}
],
"query": {
"multi_match": {
"query": "மிகச்சிறந்த திரைப்படங்கள்",
"fields": ["திரைப்படம்", "இயக்குனர்", "விமர்சனம்", " தீர்ப்பு", "மதிப்பீடு", " வெளியிடப்பட்ட தேதி"],
"operator": 'or',
"type": "best_fields"
}
}
}
NOTE: These are the field supported currently by UI but using postman can do more advanced search