54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
from lxml.html.clean import clean_html, Cleaner
|
|
|
|
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)
|
|
# print(yaml.dump(r))
|
|
return links, r.hits
|