2 Commits

Author SHA1 Message Date
3b6134f063 chore(calc)!: use integer for constant argument 2023-09-23 21:57:33 +08:00
6ec3acb145 wip: searcher 2023-09-23 21:55:04 +08:00
2 changed files with 6 additions and 9 deletions

View File

@ -22,12 +22,9 @@ def calculate_score_modifier(score: int) -> Decimal:
return Decimal(score - 9500000) / 300000 return Decimal(score - 9500000) / 300000
def calculate_play_rating( def calculate_play_rating(constant: int, score: int) -> Decimal:
constant: Union[Decimal, str, float, int], score: int
) -> Decimal:
constant = Decimal(constant)
score_modifier = calculate_score_modifier(score) score_modifier = calculate_score_modifier(score)
return max(Decimal(0), constant + score_modifier) return max(Decimal(0), Decimal(constant) / 10 + score_modifier)
def calculate_shiny_pure(notes: int, score: int, pure: int, far: int) -> int: def calculate_shiny_pure(notes: int, score: int, pure: int, far: int) -> int:

View File

@ -2,7 +2,7 @@ from typing import List, Union
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from whoosh.analysis import LowercaseFilter, RegexTokenizer from whoosh.analysis import NgramFilter, StandardAnalyzer
from whoosh.fields import ID, KEYWORD, TEXT, Schema from whoosh.fields import ID, KEYWORD, TEXT, Schema
from whoosh.filedb.filestore import RamStorage from whoosh.filedb.filestore import RamStorage
from whoosh.qparser import FuzzyTermPlugin, MultifieldParser, OrGroup from whoosh.qparser import FuzzyTermPlugin, MultifieldParser, OrGroup
@ -13,7 +13,7 @@ from .utils.search_title import recover_search_title
class Searcher: class Searcher:
def __init__(self): def __init__(self):
self.text_analyzer = RegexTokenizer() | LowercaseFilter() self.text_analyzer = StandardAnalyzer() | NgramFilter(minsize=2, maxsize=5)
self.song_schema = Schema( self.song_schema = Schema(
song_id=ID(stored=True, unique=True), song_id=ID(stored=True, unique=True),
title=TEXT(analyzer=self.text_analyzer, spelling=True), title=TEXT(analyzer=self.text_analyzer, spelling=True),
@ -107,5 +107,5 @@ class Searcher:
query_string = f"{string}" query_string = f"{string}"
query = self.default_query_parser.parse(query_string) query = self.default_query_parser.parse(query_string)
with self.index.searcher() as searcher: with self.index.searcher() as searcher:
results = list(searcher.search(query, limit=limit)) results = searcher.search(query, limit=limit)
return results return [result.get("song_id") for result in results]