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
def calculate_play_rating(
constant: Union[Decimal, str, float, int], score: int
) -> Decimal:
constant = Decimal(constant)
def calculate_play_rating(constant: int, score: int) -> Decimal:
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:

View File

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