2012-01-14 73 views
10

我试图在Solr中设置一些基本同义词。一个我一直在努力为:如何使solr同义词工作

我们,美国,美国

我的理解是,并补充说,以同义词文件将允许用户搜索美国,并取回含有美国或联合文件状态。如果用户放入美国或美国,同上。

不幸的是,当我进行搜索时,我得到了包含所有三个单词的项目的结果 - 它正在对同义词进行AND操作,而不是对OR进行操作。

如果我打开调试,这确实是我看到(加上一些词干):

(+DisjunctionMaxQuery(((westCite:us westCite:usa westCite:unit) | (text:us text:usa text:unit) | (docketNumber:us docketNumber:usa docketNumber:unit) | ((status:us status:usa status:unit)^1.25) | (court:us court:usa court:unit) | (lexisCite:us lexisCite:usa lexisCite:unit) | ((caseNumber:us caseNumber:usa caseNumber:unit)^1.25) | ((caseName:us caseName:usa caseName:unit)^1.5))))/no_coord

我是不是做错了什么造成的?我的defaultOperator设置为AND,但我希望同义词过滤器能够理解这一点。

回答

2

为了更好地理解同义词搜索,我们将一步实施的步骤的过程(我用Solr的6.5 *版本。):

第1步:

下载country-synonyms.txt文本文件,并将其放置在以下路径:

路径:\ solr的-6.5.1 \服务器\ solr的\ yourCore \ CONF

yourCore:芯的名称也应相应改变

步骤2:

中添加字段类型托管架构上述相同路径中的文件:

第3步: 在同一个文件中(托管模式)型国家添加您的字段(国籍)。

<field name="Nationality" type="country" indexed="true" stored="true"/> 

步骤4: 重启solr的。

solr restart -p <your solr port> 

步骤5:

现在用含有国籍领域导入数据***

步骤6:

现在可通过以下案例和测试查询:

查询

  1. 国籍:美国
  2. 国籍:美国
  3. 国籍:美国
  4. 国籍:美国

的美国的所有上述疑问会给你同样的结果。

注意:***仅在执行上述步骤(包括solr重新启动)后才导入数据。它可能不适用于现有数据(更多详细信息,请参阅:AnalyzersTokenizersTokenFilters