Skip to content

How to use SearchCriterio with fulltext of mysql #1920

Open
@y584187532

Description

@y584187532

创建的fulltext索引:

class CourseText(Model):
    id = fields.IntField(pk=True)
    shines_text = fields.TextField()
    english_text = fields.TextField()

    def __str__(self):
        return self.shines_text

    class Meta:
        table = 'course_text'
        indexes = [
            FullTextIndex(fields=("shines_text", "english_text"), parser_name='ngram')
        ]

使用 SearchCriterio全文检索:

@app.get('/coursetext/{strs}')
async def get_course_text(strs: str):
    #c = await CourseText.raw(f"select * from course_text where match (shines_text, english_text) against ('{strs}')")

    c = SearchCriterion(Term('shines_text'),
                        Term('english_text'), expr=Term(strs), mode=Mode.NATURAL_LANGUAGE_MODE)

    return c

接口返回:

{
    "alias": null,
    "comparator": " ",
    "left": {
        "alias": null,
        "name": "MATCH",
        "args": [
            {
                "alias": "shines_text"
            },
            {
                "alias": "english_text"
            }
        ],
        "schema": null
    },
    "right": {
        "alias": null,
        "name": "AGAINST",
        "args": [
            {
                "alias": "王速所院里持口切"
            }
        ],
        "schema": null,
        "mode": "IN NATURAL LANGUAGE MODE"
    }
}

为什么没有正确返回检索出来的内容呢

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions