0

我有一个类似这样的 Djapian 索引器。

class SomeModelIndexer(Indexer):
   fields = ["body"]
   tags = [('title', 'title', 2),
           ('tag', 'strtags')]

space.add_index(SomeModel, SomeModelIndexer, attach_as="indexer")

这允许我通过标签搜索 SomeModels,例如“tag:sausages”,它会找到任何带有“sausages”标签的 SomeModels。(strtags 是 SomeModel 上的 @property 修饰函数)。

In [1]: from project.someapp.models import SomeModel
In [2]: from project.someapp import index
In [3]: SomeModel.indexer.search("tag:sausages").count()
Out[3]: 2L

这样就可以了,但是我也有一个 CompositeIndexer,其中包含 SomeModelIndexer 但在该索引器中搜索“tag:sausages”会返回零结果。

composite_index = CompositeIndexer(SomeModel.indexer, AnotherModel.indexer)

In [4]: index.composite_index.search("tag:sausages").count()
Out[4]: 0L

关于我如何让它发挥作用的任何线索?

4

1 回答 1

2

我认为你应该提交一个错误。

如果您只搜索sausages它应该返回一些结果。

做一些测试,按照教程我做了一些查询:

Person.indexer.search("name:alex").count() --> 2L --> OK
Movie.indexer.search("director:alex").count() --> 1L --> OK

index.complete_indexer.search("name:alex").count() --> 0L --> WRONG
index.complete_indexer.search("director:alex").count() --> 0L --> WRONG
index.complete_indexer.search("alex").count() --> 3L --> OK

complete_indexerCompositeIndexer两个索引之间的一个。

于 2012-09-19T14:45:18.900 回答