La ricerca con la punteggiatura dà risultati incoerenti

Ad esempio, cercando it, it:, “it, it:”, “it, it:”,, "it, it:", o it, it:”, non viene restituito questo post, anche se contiene effettivamente “it, it:”.[1]

Inoltre, quando si preme il pulsante di ricerca, le virgolette “” vengono trasformate in "". Non mi piace questa esperienza e non so se si tratti di un bug.

Piattaforma: Edge su Android, try.discourse.org, riproducibile in modalità sicura


  1. Nel caso in cui il post venga eliminato automaticamente: il contenuto del post di test è: It, “it, it:”, it, oandnxkwbs. ↩︎

Penso che it sia una parola di riempimento (stop word) che viene esclusa dalla ricerca. Hai provato a riprodurre il problema con una parola non presente in quell’elenco, per verificare che si tratti di una questione di punteggiatura?

Non riesco più a riproducerlo in alcun altro modo. Forse il forum in cui ho visto il problema utilizza una versione di Discourse non aggiornata.

In realtà credo di poterlo riprodurre di nuovo, prova a cercare questo post cercando we don't

E cercando “just-use-interface{}/object; we don’t need generics non sono necessari” o "just-use- interface{} / object ; we don't need generics" non si trova

Ma cercando just-use- interface{} / object ; we don't need generics si trova

Sì, è corretto… non puoi cercare it affatto… se provi qui, non ottieni risultati. Le parole che tendono a comparire un numero estremo di volte (I, the, a, pronomi, ecc.) sono escluse dall’indicizzazione perché appaiono troppo spesso per fornire una differenziazione significativa.

stesso qui, we e don't (tecnicamente don e t) non sono indicizzati

questa situazione è un po’ diversa… per:

"just-use- interface{} / object ; we don't need generics"

questo non funzionerà mai, le virgolette richiedono una corrispondenza esatta e gli spazi lo rendono non una corrispondenza esatta

nel caso della ricerca di:

"just-use-interface{}/object; we don't need generics"

il testo originale del post contiene una virgoletta stilizzata (don’t) ma la ricerca le rimuove, quindi non puoi mai ottenere una corrispondenza esatta per una… questo significa che i post e la ricerca non sono esattamente simmetrici, il che è forse qualcosa che potrebbe essere migliorato

questo è perché senza le virgolette attorno, non stai cercando una corrispondenza esatta, quindi raccoglie i termini “interface” “object” “need” “generics” e quel post è la migliore corrispondenza per quei termini

Ho trovato molto difficile individuare gli argomenti che cercavo, anche usando parole banali. Si tratta di qualcosa di già menzionato in precedenza, e anni fa era stato condotto un esperimento di integrazione con Typesense.

Mi chiedo se ci siano piani concreti per migliorare la funzione di ricerca di Discourse. È uno degli strumenti più utilizzati e credo che abbia bisogno di un po’ di rifacimento e di attenzioni.

Forse aggiungere un’opzione “ricerca in testo semplice”? che disabilita le insidie come le virgolette ""

E sono curioso: c’è un motivo tecnico per escludere “we” e “don’t” (don, t) dall’indicizzazione per la ricerca? Perché sono troppo comuni?

sì, esatto

Le stop word sono parole molto comuni, presenti in quasi ogni documento e prive di valore discriminante. Pertanto, possono essere ignorate nel contesto della ricerca full text. Ad esempio, ogni testo in inglese contiene parole come a e the, quindi è inutile memorizzarle in un indice.

PostgreSQL: Documentation: 18: 12.6. Dictionaries