Compass 更智能的搜索引擎(3)--高亮,排序,过滤以及各种搜索

作者:Marksinoberg

要想使得一个搜索系统更加的完美,查询精确度和页面显示算是其中比较重要的两个方面。今天,我们就来谈谈怎么使得我们的搜索系统更加的完美。



关于分词

分词的好坏直接关系到我们的查询系统的精准度。所以一个更加适合的分词方式很重要。对于中文而言,更是如此。

Compass配置分词器简直是不能再简单了。我这里使用一个中科院研制的一个高效中文分词器。JE-Analysis,

下载地址

配置

我们使用xml的方式对分词器进行配置。
导入刚才下载的jar包之后,我们可以在项目的依赖中找到如图所示信息。
中文分词器

右键红色区域文件,点击copy qualified name。然后配置成如下面貌即可。

<?xml version="1.0" encoding="UTF-8" ?>
<compass-core-config xmlns="http://www.compass-project.org/schema/core-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.compass-project.org/schema/core-config
           http://www.compass-project.org/schema/compass-core-config-2.2.xsd">

    <compass name="default">
        <!-- 连接信息,好比数据库的连接信息 -->
        <connection>
            <file path="./indexDir/" />
        </connection>

        <!-- 映射信息,好比Hibernate的映射关系 -->
        <mappings>
            <class name="domain.Article" />
        </mappings>
        <!-- 分词器以及高亮器的配置 -->
        <settings>
            <!-- 分词器的配置,可选择中文的 -->
            <setting name="compass.engine.amalyzer.default.type" value="jeasy.analysis.MMAnalyzer" />

        </settings>
    </compass>
</compass-core-config>   

好了,大功告成了。

关于高亮

对于高亮而言,我们其实并未真正的改变原始数据,而是将取出来的数据进行了一些包装而已。这样影响的仅仅是显示在我们的页面上数据。

高亮在Compass中更加方便,如下:

<?xml version="1.0" encoding="UTF-8" ?>
<compass-core-config xmlns="http://www.compass-project.org/schema/core-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.compass-project.org/schema/core-config
           http://www.compass-project.org/schema/compass-core-config-2.2.xsd">

    <compass name="default">
        <!-- 连接信息,好比数据库的连接信息 -->
        <connection>
            <file path="./indexDir/" />
        </connection>

        <!-- 映射信息,好比Hibernate的映射关系 -->
        <mappings>
            <class name="domain.Article" />
        </mappings>
        <!-- 分词器以及高亮器的配置 -->
        <settings>
            <!-- 分词器的配置,可选择中文的 -->
            <setting name="compass.engine.amalyzer.default.type" value="jeasy.analysis.MMAnalyzer" />
            <!-- 高亮器前缀 -->
            <setting name="compass