我正在尝试与django-drf一起设置solr搜索引擎。 我为此目的使用drf_haystack。 我正在使用solr-tomcat6.但是我被困住了,我不知道我哪里出错了。每当我通过get调用执行搜索时,我都没有在django rest框架页面中得到任何响应。 我已完成本教程中提到的solr的所有设置 - https://www.digitalocean.com/community/tutorials/how-to-install-solr-on-ubuntu-14-04 在从
获取架构后,我还将我的架构放在conf文件夹中python manage.py build_solr_schema
至于tomacat6,默认端口是8080我的settings.py看起来像 -
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://localhost:8080/solr'
},
}
我的models.py很简单,标题为主键,Test为模型。看起来像 -
class Test(models.Model):
title = models.TextField(blank=True, primary_key=True)
url = models.TextField(blank=True, null=True)
price = models.TextField(blank=True, null=True)
brief = models.TextField(blank=True, null=True)
def __unicode__(self):
return self.title
class Meta:
db_table = 'test'
我是使用solr的新手,我的index.py中可能有一个错误,我已在此处显示 -
class TestIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
url = indexes.CharField(model_attr='url')
price = indexes.CharField(model_attr='price')
def get_model(self):
return Test
def index_queryset(self, using=None):
return self.get_model().objects.all()
我已将序列化程序包含在视图中。这是我的views.py -
class TestSerializer(HaystackSerializer):
class Meta:
index_classes = [TestIndex]
fields = [
"title","url","price","brief"
]
class SearchView(HaystackViewSet):
index_models = [Test]
serializer_class = TestSerializer
最后我的urls.py看起来如下:
router = routers.DefaultRouter()
router.register("item/search", SearchView, base_name="item-search")
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r"api/", include(router.urls))
]
我在网址中输入以下内容来执行搜索: http://127.0.0.1:8000/api/item/search/?title__contains=Asus
这是一个空字典。请帮助我解决我的问题,也许有一个愚蠢的错误。