我正在开发一个属性搜索工具作为我的业余爱好项目,以学习弹性搜索和基巴纳语。
以下是项目的详细信息:
Each property has these 6 attributes - Id, Latitude, Longitude, Price, Number of bedrooms, Number of bathrooms
用户可以根据以下四个参数进行搜索:
Distance - radius (high weightage)
Budget (high weightage)
Number of bedrooms (low weightage)
Number of bathrooms (Low weightage)
每个比赛都应有一个百分比,以指示比赛的质量。例如:如果一个物业完全符合上述所有4个限制条件的买家搜索要求,则该物业为100%匹配。
每个需求都有这9个属性-ID,纬度,经度,最低预算,最高预算,所需的最低卧室数,所需的最高卧室数,所需的最低浴室数,所需的最高浴室数。
功能要求
1. All matches above 40% can only be considered useful.
2. Requirements can be without a min or a max for the budget, bedroom and a bathroom but either min or max would be surely present.
3. For a property and requirement to be considered a valid match, distance should be within 10 miles, the budget is +/- 25%, bedroom and bathroom should be +/- 2.
4. If the distance is within 2 miles, distance contribution for the match percentage is fully 30%
5. If the budget is within min and max budget, budget contribution for the match percentage is full 30%. If min or max is not given, +/- 10% budget is a full 30% match.
6. If bedroom and bathroom fall between min and max, each will contribute full 20%. If min or max is not given, match percentage varies according to the value.
到目前为止我尝试过的事情
我评估了用例,并提出了功能评分查询方法,可以放置多个过滤器(例如地理位置,范围等),这些过滤器可以根据用户选择的参数值过滤出结果。
我还阅读了有关关系数据库的倒排索引方法。
问题
1.弹性搜索是否适合这种用例?无论如何,我将用RDBMS编写数据并将弹性用于搜索查询,这种解决方案是否可以扩展到大量用户?
我需要什么 无论我是否朝着正确的方向发展,还有任何其他方法来处理这种用例,都能为我提供帮助吗?如果使用Elastic是正确的方法,那么如何编写这样的查询,就不需要完整的查询,但只要有一点点指导就可以完成解决方案。