问题标签 [whoosh]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1173 浏览

python - Django-haystack:添加自动完成所需的“content_auto”行后,rebuild_index 失败(haystack.exceptions.SearchFieldError)

我正在尝试为仅搜索单词的一部分实现产生结果(autocomplete如果我没记错的话,根据 Haystack 文档调用)。

例子:

搜索"gol"

结果"goldfish"

我尝试了什么?

我按照文档步骤 1 中的要求做了,我在我的 Index 类中添加了以下行:

然后做了python manage.py rebuild_index

然而,重建索引产生了一个错误 haystack.exceptions.SearchFieldError: The model '<Person: Reginald>' does not have a model_attr 'content'.,因为Reginald它是我的索引表中的第一个条目并且Person是我索引的模型。

现在确实我的模型没有一个名为的字段,content但正如文档中所示,它不需要有这样的字段。

我正在使用Whoosh 2.4.1,Django-haystack 1.2.7Django 1.4.

0 投票
1 回答
212 浏览

python - How to write correct query for Haystack + Whoosh in Django

I have model:

And file search_indexes.py:

When I execute query it can find only than words which I have in TITLE field. When I use word combination from TEXT field I got "No results found"

What I must add for executing queries with words from TEXT field?

0 投票
1 回答
144 浏览

whoosh - 在标记中包含斜杠和括号

背景

我有包含希腊字符的搜索索引。许多人不知道如何输入希腊语,所以他们输入了一个叫做“beta-code”的东西。Beta 代码可以转换为希腊语。例如,beta 代码“NO/MOU”将被转换为“νόμου”。斜线或括号等字符用于表示重音。

期望的行为

我希望用户能够使用希腊语脚本中的 beta 代码或文本进行搜索。我发现 Whoosh Variations类提供了我需要的机制,它几乎解决了我的问题。

问题

Variation 类运行良好,除非在用户查询中使用斜杠或括号表示重音。问题是查询被解析,以便用于表示重音的特殊字符导致单词被拆分。例如,搜索“NO/MOU”会导致 Variations 类被要求查找“no”和“mou”的变体,而不是“NO/MOU”。

问题

有没有办法影响查询的解析方式,以便在搜索词中包含斜杠和括号(即搜索“NO/MOU”会导致搜索“NO/MOU”的标记而不是“ no”和“mou”)?

0 投票
1 回答
499 浏览

python - 在python中超出索引

我正在尝试对 excel 文件进行索引,并且我使用了 whoosh 包,但是我发现列表索引超出范围的错误。拜托,谁能帮帮我?我的代码是:

我得到这个错误,我不知道为什么?错误:

和我的 csv 文件:

0 投票
2 回答
348 浏览

python - 嗖嗖:不应该或者只增加结果?

我们使用 Haystack 1.2.7 和 Whoosh 2.4.1 作为后端索引了大约 9k 个文档。尽管使用了 Haystack,但它看起来像是一个 Whoosh 问题。看看我的调试案例:

1) 如果我只是进行精确查找,Whoosh 会找到我的文档(如下所示):

2) 如果我只是运行startswith 查找,Whoosh 找不到我的文档(如下所示):

3) 如果我将所有内容放在一个 OR 查询中,Whoosh 仍然找不到我的文档(如下所示):

查看 Haystack 发送给 Whoosh 的查询,我们有:

如您所见,最后一个查询正是(第一个或第二个)。Whoosh 不应该找到我的文件吗?我看不出我的逻辑哪里错了:我使用的是 OR 并且发现比使用其中一个语句时要少。

我也认为 Whoosh 在第一个查询 (numero:6210202443/10) 中找到我的文档,但在第二个 (numero:6210202443/10*) 中没有找到我的文档,这很奇怪。但我想这与 Haystack 在我的 CharField 中使用的 StemmingAnalyzer 有关。之后我会深入研究一下。

0 投票
2 回答
974 浏览

django - 在 Heroku 上搜索 Django 应用程序的后端

在我的开发应用程序中,我使用了 Haystack 的组合,以 Whoosh 作为后端进行搜索。

但是,当我部署到 Heroku 时,我的搜索不再起作用,即使在运行python manage.py update_index.

经过一番研究,我发现这是因为 Heroku 的只读文件系统。

是否有任何免费的解决方案可以在 Heroku 上解决此问题,以便我可以进行搜索?我看过的插件每月大约 20 美元,如果可能的话,我更愿意开始使用免费的解决方案。

0 投票
2 回答
938 浏览

django - 带有嗖嗖声的 Django-haystack 搜索返回“无结果”调试不成功

我是 Django 和 Haystack 的新手。我已经完成了 Haystack 文档的“入门”页面和调试页面上的所有建议,但我看不出我的错误在哪里。 sqs.count()即使rebuild_index看起来可行,也返回 0,在被索引的表中提供正确数量的条目并将索引文件生成到whoosh_index目录中。

search_indexes有所需的text =行,我有一个 search_sites.py,我已经更改了 settings.py 和 urls.py,并且我在正确的目录中有 [model_name]_text.txt 文件。

我们正在一个大学服务器上工作,我们必须在安装 Haystack 后更新 Django 以与 Haystack 一起工作,因为我们意识到它是一个不兼容的版本(1.1 而不是 1.5) - 旧的 Django 会以某种方式与 Haystack 安装混淆吗?

0 投票
1 回答
276 浏览

django - haystack whoosh 没有结果-rebuild_index 显示索引 [number]

当我跑步时,./manage.py rebuild_index我会得到读数,例如:

Indexing 4574 <django.utils.functional.__proxy__ object at at 0x1aab690> .

看到其他用户的读数后,这应该显示搜索索引/模型的名称,我想知道这是否可以解释为什么我在网站上没有遇到搜索结果并且似乎没有对象执行时索引:

我最初没有 def _ unicode _self(): return self.name 在我正在索引的模型上,但后来我添加了它,即使做了之后似乎也没有任何改变rebuild_index

0 投票
1 回答
567 浏览

whoosh - whoosh 不会搜索像“C#”这样的短词

我正在使用 whoosh 索引超过 200,000 本书。但我遇到了一些问题。whoosh 查询解析器为“C#”、“C++”等带有元字符的词以及其他一些短词返回 NullQuery。这个词用在一些文件的标题和正文中,所以我没有为它们使用关键字类型。我想问题出在搜索或索引的分析或查询解析阶段,但我不能盲目地触摸我的数据。谁能帮我纠正这个问题。肿瘤坏死因子。

我通过创建一个符合我要求的正则表达式模式的 StandardAnalyzer 解决了这个问题,这里是正则表达式模式:

'\w+[#+.\w]*'

这将使字段的标记化成功完成,并且搜索也很顺利。但是当我使用诸如“some query++*”或“some##*”之类的查询时,解析的查询将是一个每个查询,只是“*”。我还发现这与我的分析器无关,这是 Whoosh 的默认行为。所以这是我的新问题:这种行为正确还是错误?

注意:从查询解析器中删除 WildcardPlugin 解决了这个问题,但我还需要 WildcardPlugin。


现在我正在使用以下代码:

...现在在我的架构中:

这将解决我的第一个问题,是的。但主要问题在于搜索。我不想让用户使用Every查询或*. 但是当我解析像我这样的查询时,C++*我最终得到了一个Every(*)查询。我知道有一些问题,但我无法弄清楚它是什么。

0 投票
2 回答
739 浏览

django - 带有嗖嗖声的 Django-haystack - 无法按布尔字段过滤

好吧,我已经把头发拉了好几个小时了,我想是时候寻求帮助了,因为我无法通过谷歌搜索找出为什么会发生这种情况......

本质上,我正在制作一个分类类型的应用程序,我需要一个搜索表单来搜索数据库并根据各种条件进行过滤。我正在使用 django、haystack 和 whoosh,它几乎可以完美运行,但我似乎无法让它过滤布尔变量。我已经成功地将它过滤到 Charfield 类别并且它工作得很好但是当我尝试添加基于 for_sale 布尔值(或任何布尔值)的过滤器时,它不会过滤任何东西并返回相同的结果,好像它从未被调用过(我已经检查过它实际上被调用了)。

有人有想法么?

我的模型的相关部分:

这是我的列表索引类:

我扩展的 SearchForm 和 SearchView:

最后是我的列表索引文本文件: