Yesterday (20 May 2017) the first official pucene hackday went over the stage. The sulu team tried to understand the code, add some new features and improve the code.
What we did
Alex used the day to define the configuration for the mapping. In order to be able to treat date fields as dates, numeric fields as numbers, and string fields as full-text or exact-value strings, pucene needs to know what type of data each field contains. This information is contained in the mapping (pucene/pucene#33, pucene/pucene#32 and pucene/pucene#34).
Thomas and I talked about the architecture and the scoring queries which take currently lots of time to calculate. We consolidated the code from ZendSearch to take a look how there the scoring is calculated. We saw that there everything is done in PHP and it could be an improvement to use SQL to load the matching documents and calculate the scoring in PHP - this will be an experiment soon. After that, we wanted to do something productive and decided to clean up the database structure. This was so successfully that we could improve the speed of bigger queries (pucene/pucene#35).
We also talked about the future of pucene and defined the next steps.
The improvement of search and scoring should be one of the important things. But the project should also come to a point where we could take it to the next level. There will be a new adapter (besides dbal and elasticsearch) which uses ZendSearch. Also, this adapter will be fully replaceable with the other ones and will allow using the already defined interfaces in real time projects and performance comparison between the ZendSearch library and dbal implementations.
Want to contribute
The Hackday shows that my little pucene-baby is now major enough to open it for other contributors and I can spread my idea with the community. If you are interested you can contact me, pick up an issue from github or improve the code if you think you have a better idea of structuring the code.
At the end, I would like to thank the sulu team which spent the time with me.