You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Bryan Bende <bb...@gmail.com> on 2015/03/04 18:49:04 UTC

Recommendations based on MoreLikeThis & user likes/dislikes

Does anyone have experience tracking documents that a user "liked" /
"disliked" and then incorporating that into a MoreLikeThis query?

The idea would be to exclude any document a user disliked from ever
returning as a similar document, and to boost any document a user liked so
it shows up higher in the similar documents.

The biggest question seems to be how and where to store the
likes/dislikes...

- A multi-valued field on each document that stores the usernames of who
liked it (same for dislikes). This will cause a lot of updates to this
document, and the document can be fairly large with a lot of stored fields.

- A nested child document that stores the user, whether it was a like or
dislike, and any other necessary information, and then somehow using
block-join. If I'm correct this still requires updating the whole block
when a new child document is inserted.

- A separate solr document that stores the same information as the nested
child would, but would have to be joined together at query time. Not sure
of the performance impact here.

- Store the likes/dislikes completely outside Solr and somehow pass this
information in to a query, not sure if this is feasible if there are
thousands of likes and dislikes for a single user.

Any thoughts or best practices for implementing something like this would
be appreciated.

Thanks,

Bryan

Re: Recommendations based on MoreLikeThis & user likes/dislikes

Posted by Ahmet Arslan <io...@yahoo.com.INVALID>.
Hi Bryan,

If you have sufficient like/dislike data, I would set up a collaborative filtering / recommendation system. For example : 
https://mahout.apache.org

Then we can view mlt as content based recommendation. Then you can combine results from both systems.

Ahmet



On Wednesday, March 4, 2015 7:51 PM, Bryan Bende <bb...@gmail.com> wrote:
Does anyone have experience tracking documents that a user "liked" /
"disliked" and then incorporating that into a MoreLikeThis query?

The idea would be to exclude any document a user disliked from ever
returning as a similar document, and to boost any document a user liked so
it shows up higher in the similar documents.

The biggest question seems to be how and where to store the
likes/dislikes...

- A multi-valued field on each document that stores the usernames of who
liked it (same for dislikes). This will cause a lot of updates to this
document, and the document can be fairly large with a lot of stored fields.

- A nested child document that stores the user, whether it was a like or
dislike, and any other necessary information, and then somehow using
block-join. If I'm correct this still requires updating the whole block
when a new child document is inserted.

- A separate solr document that stores the same information as the nested
child would, but would have to be joined together at query time. Not sure
of the performance impact here.

- Store the likes/dislikes completely outside Solr and somehow pass this
information in to a query, not sure if this is feasible if there are
thousands of likes and dislikes for a single user.

Any thoughts or best practices for implementing something like this would
be appreciated.

Thanks,

Bryan