gpt4 book ai didi

django - Django haystack 和 whoosh 的字符折叠

转载 作者:行者123 更新时间:2023-12-03 17:51:24 25 4
gpt4 key购买 nike

我有一个基于 django 的应用程序,带有 haystack 和 whoosh 搜索引擎。我想提供与重音和特殊字符无关的搜索,以便我也可以使用没有特殊字符的单词找到带有特殊字符的索引数据:

索引是:

'café'

搜索词:
'cafe'  
'café'

我写了一个特定的 FoldingWhooshSearchBackend,它使用了 StemmingAnalyzer和一个 CharsetFilter(accent_map)如以下文件所述:

https://gist.github.com/gregplaysguitar/1727204

然而,搜索仍然无法像预期的那样工作,即我无法使用“cafe”进行搜索并找到“café”。我已经使用以下方法查看了搜索索引:
from whoosh.index import open_dir
ix = open_dir('myservice/settings/whoosh_index')
searcher = ix.searcher()
for doc in searcher.documents():
print doc

特殊字符仍在索引中。

我需要做一些额外的事情吗?是关于改变索引模板吗?

最佳答案

你必须写Haystack SearchIndex您的模型的类。这就是您可以为搜索索引准备模型数据的方式。

myapp/search_index.py 示例:

from haystack import site
from haystack import indexes

class UserProfileIndex(indexes.SearchIndex):
text = indexes.CharField(document=True)

def prepare_text(self, obj):
data = [obj.get_full_name(), obj.user.email, obj.phone]
original = ' '.join(data)
slugified = slugify(original)
return ' '.join([original, slugified])

site.register(UserProfile, UserProfileIndex)

如果用户有姓名 café ,您会在搜索词中找到他的个人资料 cafécafe .

关于django - Django haystack 和 whoosh 的字符折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com