Files
intern2020/solrfet2020/__init__.py
2021-01-01 22:20:36 +00:00

53 lines
1.4 KiB
Python

import settings
import pysolr
from .convert import post_to_solr, member_to_solr
from urllib.parse import urljoin
from fet2020api import fet2020memberapi, fet2020api
import yaml
from .solr_to_objects import result_to_object
fet = fet2020api(urljoin(settings.TARGET, "api/posts/"), pk="slug")
fetmember = fet2020memberapi(urljoin(settings.TARGET, "api/members/"))
class SolrFet2020:
def __init__(self):
self.solr = pysolr.Solr(
urljoin(settings.SOLR_HOST, "/solr/core"), always_commit=True
)
def reindex(self):
self.solr.delete(q="*:*")
p = post_to_solr(fet.find({"slug": ""}))
self.solr.add(p)
m = member_to_solr(fetmember.find({"nickname": ""})) # search all members
self.solr.add(m)
def reindextest(self):
m = fetmember.find({"nickname": ""})
print(m)
def search(self, query):
querystring = "text_txt:*%s* title_txt:*%s*^2 tags_tkn:*%s*^2" % (
query,
query,
query,
)
r = self.solr.search(
querystring,
sort="score desc, date_dt desc",
**{
"hl": "true",
"hl.fragsize": 100,
"hl.fl": "*",
"hl.maxAnalyzedChars": -1,
"hl.snippets": 10,
}
)
links = result_to_object(r)
return links, r.hits