django-haystack returning unexpected results
up vote
0
down vote
favorite
I am trying to integrate django-haystack on a blog.
Here is my Post
model:
class Post(models.Model):
slug = models.CharField(max_length=2000)
title = models.CharField(max_length=2000)
content = models.TextField(blank=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
def __str__(self):
return self.title
Here is the how code in search_indexes.py
file:
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
content = indexes.CharField(model_attr='content')
def get_model(self):
return Post
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(created_on__lte=datetime.datetime.now())
As you can see, I am using EdgeNgramField
type to search for partial terms.
Now if I search for the term elastic
, as expected, haystack returns post containing elastic
somewhere either title
or content
field. However, haystack also returns some additional posts which do not have the term elastic
neither in title
or nor in content
.
How can I fix this?
I have tested this code on: django-haystack (2.8.1), elasticsearch-2.4.2, and django-1.11
PS: This is my first encounter with elastic search.
python django elasticsearch django-haystack
add a comment |
up vote
0
down vote
favorite
I am trying to integrate django-haystack on a blog.
Here is my Post
model:
class Post(models.Model):
slug = models.CharField(max_length=2000)
title = models.CharField(max_length=2000)
content = models.TextField(blank=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
def __str__(self):
return self.title
Here is the how code in search_indexes.py
file:
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
content = indexes.CharField(model_attr='content')
def get_model(self):
return Post
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(created_on__lte=datetime.datetime.now())
As you can see, I am using EdgeNgramField
type to search for partial terms.
Now if I search for the term elastic
, as expected, haystack returns post containing elastic
somewhere either title
or content
field. However, haystack also returns some additional posts which do not have the term elastic
neither in title
or nor in content
.
How can I fix this?
I have tested this code on: django-haystack (2.8.1), elasticsearch-2.4.2, and django-1.11
PS: This is my first encounter with elastic search.
python django elasticsearch django-haystack
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to integrate django-haystack on a blog.
Here is my Post
model:
class Post(models.Model):
slug = models.CharField(max_length=2000)
title = models.CharField(max_length=2000)
content = models.TextField(blank=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
def __str__(self):
return self.title
Here is the how code in search_indexes.py
file:
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
content = indexes.CharField(model_attr='content')
def get_model(self):
return Post
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(created_on__lte=datetime.datetime.now())
As you can see, I am using EdgeNgramField
type to search for partial terms.
Now if I search for the term elastic
, as expected, haystack returns post containing elastic
somewhere either title
or content
field. However, haystack also returns some additional posts which do not have the term elastic
neither in title
or nor in content
.
How can I fix this?
I have tested this code on: django-haystack (2.8.1), elasticsearch-2.4.2, and django-1.11
PS: This is my first encounter with elastic search.
python django elasticsearch django-haystack
I am trying to integrate django-haystack on a blog.
Here is my Post
model:
class Post(models.Model):
slug = models.CharField(max_length=2000)
title = models.CharField(max_length=2000)
content = models.TextField(blank=True)
created_on = models.DateTimeField(auto_now_add=True)
updated_on = models.DateTimeField(auto_now=True)
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
def __str__(self):
return self.title
Here is the how code in search_indexes.py
file:
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
content = indexes.CharField(model_attr='content')
def get_model(self):
return Post
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(created_on__lte=datetime.datetime.now())
As you can see, I am using EdgeNgramField
type to search for partial terms.
Now if I search for the term elastic
, as expected, haystack returns post containing elastic
somewhere either title
or content
field. However, haystack also returns some additional posts which do not have the term elastic
neither in title
or nor in content
.
How can I fix this?
I have tested this code on: django-haystack (2.8.1), elasticsearch-2.4.2, and django-1.11
PS: This is my first encounter with elastic search.
python django elasticsearch django-haystack
python django elasticsearch django-haystack
asked yesterday
Cody
87311231
87311231
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53204321%2fdjango-haystack-returning-unexpected-results%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password