前台搜索并不是使用sql从数据库查询,而是使用Lucene全文搜索引擎实现。数据库使用like进行查询,需要全表扫描,数据量大时,性能非常差。全文搜索引擎的性能比数据库的like查询快几个数量级。全文搜索使用分词搜索,比如搜索“哪家饭店口味最好”,会搜索到“饭店”、“口味”、“最好”相关的文章;如使用数据库搜索,则必须完全匹配到相应的字符串。
全文索引必须先对要搜索的数据进行分析处理,并保存到特有的文件里。在Jspxcms里面,全文索引文件保存在/WEB-INF/fulltext
文件夹里。有时候数据库中的数据和全文索引里的数据可能会出现不匹配的情况,比如对数据库进行了导入导出操作、手动删除了数据库里的数据,或者不小心删除了/WEB-INF/fulltext
里的文件。这是从全文索引里搜索出来的内容和数据库的内容就会出现不匹配的情况。这时只需要到系统后台的内容管理 - 生成管理
,点击生成全文索引
。如果生成索引后,前台搜索还出现不匹配的现象,可以将/WEB-INF/fulltext
文件夹里的内容全部删除,然后到后台重新生成全文索引。