recherche

Maison  >  Questions et réponses  >  le corps du texte

python - Flask-whooshsqlalchemyplus中文分词搜索问题

伊谢尔伦伊谢尔伦2807 Il y a quelques jours950

répondre à tous(2)je répondrai

  • 怪我咯

    怪我咯2017-04-18 10:08:25

    Si vous utilisez une base de données postgresql, vérifiez si l'encodage de votre base de données est UTF-8 ? Vous pouvez afficher les informations de la base de données via l dans le shell de la base de données :

    postgres=# \l
                                      List of databases
       Name    |  Owner   | Encoding  |   Collate   |    Ctype    |   Access privileges   
    -----------+----------+-----------+-------------+-------------+-----------------------
     db1  | owner | UTF8      | en_US.UTF-8 | en_US.UTF-8 | =Tc/owner         +
               |          |           |             |             | owner=CTc/owner
     db2     | owner   | SQL_ASCII | C           | C           | =Tc/owner           +

    Est-il possible de rechercher en chinois dans le shell de la base de données ? Peut être vérifié via le sql suivant :

    SELECT to_tsvector('我们') @@ to_tsquery('我:*');

    Le db1 ci-dessus est UTF-8, il prend donc en charge la recherche chinoise,

    postgres=# \c db1
    db1=#
    db1=# SELECT to_tsvector('我们') @@ to_tsquery('我:*');
     ?column? 
    ----------
     t
    (1 row)
    
    db1=#

    db2 est SQL_ASCII et ne prend pas en charge la recherche chinoise

    db1=# \c db2
    db2=#
    db2=# SELECT to_tsvector('我们') @@ to_tsquery('我:*');
    NOTICE:  text-search query contains only stop words or doesn't contain lexemes, ignored
     ?column? 
    ----------
     f
    (1 row)
    
    db2=#

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:08:25

    Vous pouvez vous référer à ceci : https://www.v2ex.com/t/274600...

    J'ai déjà utilisé flask-whooshalchemy, mais l'effet de segmentation des mots chinois n'était pas bon. Ensuite, j'ai utilisé Jieba pour créer la table et l'index de segmentation de mots, puis whooshalchemy a recherché la table de segmentation de mots.

    répondre
    0
  • Annulerrépondre