如何使我的搜索不区分大小写?

问题描述 投票:0回答:2

我有一个网络应用程序,可以搜索一些数据库,保存的某些数据是大写的,有些是大写和小写的,但是当搜索关键字时,我希望它忽略大小写,只显示匹配的结果这个单词。例如,我想搜索“ document_reference”而不必编写正确的保存方式,即“ Document_Reference”

有人告诉我要在索引中添加不区分大小写的代码,但不确定该怎么做或在其中添加,我试过了(在whoosh文档中找到了它)

class CaseSensitivizer(analysis.Filter):
    def __call__(self, tokens):
        for t in tokens:
            yield t
            if t.mode == "index":
                low = t.text.lower()
                if low != t.text:
                    t.text = low
                    yield t

这就是我的索引和查询解析器的样子

def open_index(indexDirectory):
    # open index and return a idex object
    ix = index.open_dir(indexDirectory)
    return ix


def search_index(srch, ix):
    #  Search the index and print results
    #  ix = open_index(indexDirectory)
    results = ''
    lst = []
    qp = MultifieldParser(['Text', 'colname',
        'tblname', 'Length', 'DataType', 'tag_name'],
        schema=ix.schema, group=qparser.OrGroup)
    # qp = QueryParser('Text', schema=ix.schema)
    q = qp.parse(srch)
    with ix.searcher() as s:
        results = s.search(q, limit=None)
        for r in results:
            print('\n', r)
            lst.append(r.fields())
        if(DEBUG):
            print('Search Results:\n', lst)
            print('\nFinished in search.py')
        return lst

当前,它只会提供与我在搜索栏中键入的内容完全匹配的结果,因此,如果我键入“ document”,但源实际上存储为“ DOCUMENT”,我将不会得到任何结果

我有一个Web应用程序,可以搜索一些数据库,保存的某些数据是大写的,有些是大写和小写的,但是当搜索关键字时,我希望它忽略大小写...

python flask indexing case-insensitive whoosh
2个回答
0
投票

代替使用lower()或upper(),您可以使用casefold()进行字符串比较。

给出here的一个很好的例子。


0
投票
>>> 'Hello'.lower() == 'hello'.lower()
True
© www.soinside.com 2019 - 2024. All rights reserved.