forked from MarseyWorld/MarseyWorld
make post search work exactly the same as comment search to
- stop confusing ppl - future-proof for when posts eventually get too many to searchmaster
parent
dfd996a37c
commit
d7a63f8cbd
|
@ -69,6 +69,10 @@ class Post(Base):
|
||||||
sharpened = Column(Boolean, default=False)
|
sharpened = Column(Boolean, default=False)
|
||||||
ping_cost = Column(Integer, default=0)
|
ping_cost = Column(Integer, default=0)
|
||||||
bump_utc = Column(Integer)
|
bump_utc = Column(Integer)
|
||||||
|
title_ts = Column(TSVECTOR(), server_default=FetchedValue())
|
||||||
|
body_ts = Column(TSVECTOR(), server_default=FetchedValue())
|
||||||
|
url_ts = Column(TSVECTOR(), server_default=FetchedValue())
|
||||||
|
embed_ts = Column(TSVECTOR(), server_default=FetchedValue())
|
||||||
|
|
||||||
if FEATURES['NSFW_MARKING']:
|
if FEATURES['NSFW_MARKING']:
|
||||||
nsfw = Column(Boolean, default=False)
|
nsfw = Column(Boolean, default=False)
|
||||||
|
|
|
@ -100,17 +100,16 @@ def searchposts(v):
|
||||||
posts = posts.filter(Post.author_id == author.id)
|
posts = posts.filter(Post.author_id == author.id)
|
||||||
|
|
||||||
if 'q' in criteria:
|
if 'q' in criteria:
|
||||||
params = [Post.title]
|
text = criteria['full_text']
|
||||||
|
|
||||||
|
params = [Post.title_ts]
|
||||||
if 'title_only' not in criteria:
|
if 'title_only' not in criteria:
|
||||||
params += [Post.body, Post.url, Post.embed]
|
params += [Post.body_ts, Post.url_ts, Post.embed_ts]
|
||||||
|
|
||||||
words = []
|
words = []
|
||||||
for x in criteria['q']:
|
|
||||||
for param in params:
|
for param in params:
|
||||||
if x.startswith('"') and x.endswith('"'):
|
words.append(param.bool_op("@@")(func.websearch_to_tsquery("simple", text)))
|
||||||
words.append(param.regexp_match(f'[[:<:]]{x[1:-1]}[[:>:]]'))
|
|
||||||
else:
|
|
||||||
words.append(param.ilike(f'%{x}%'))
|
|
||||||
posts = posts.filter(or_(*words))
|
posts = posts.filter(or_(*words))
|
||||||
|
|
||||||
if 'nsfw' in criteria:
|
if 'nsfw' in criteria:
|
||||||
|
|
Loading…
Reference in New Issue