在solr的schema.xml中有一个<uniqueKey>id</uniqueKey>元素。这个元素指定id的唯一性,即你建立索引时,如果add了两个具有相同id的索引,则最后加入的索引将覆盖前面的具有相同id的索引。
但是如果id是text类型,它的值是“中文”的话,solr这个自动覆盖功能并不起作用。不知道如何解决? :oops:
但是如果把text类型改为string类型,就能解决上述问题。呵呵,只知其然不知其所以然啊。
值得一提的还有field元素中multiValued这个属性,如下所示:<field name="content" type="text" indexed="true" stored="true" multiValued="true"/>。在这个例子里,这个属性表示content可以有多个值,即在api中,可以add两次,如下所示:
SolrInputDocument sid = new SolrInputDocument();
sid.addField("content", "今天我去上班,坐公交车");
sid.addField("content", "今天我去上班,骑自行车");
这样的话,当你使用新的id索引覆盖旧的id索引,并且你查询条件是使用content时,就要小心新索引的content里,是否有和旧索引的content里相同的值了。这样就不会有怎么没有删去旧索引的错觉了。 :)
但是如果id是text类型,它的值是“中文”的话,solr这个自动覆盖功能并不起作用。不知道如何解决? :oops:
但是如果把text类型改为string类型,就能解决上述问题。呵呵,只知其然不知其所以然啊。
值得一提的还有field元素中multiValued这个属性,如下所示:<field name="content" type="text" indexed="true" stored="true" multiValued="true"/>。在这个例子里,这个属性表示content可以有多个值,即在api中,可以add两次,如下所示:
SolrInputDocument sid = new SolrInputDocument();
sid.addField("content", "今天我去上班,坐公交车");
sid.addField("content", "今天我去上班,骑自行车");
这样的话,当你使用新的id索引覆盖旧的id索引,并且你查询条件是使用content时,就要小心新索引的content里,是否有和旧索引的content里相同的值了。这样就不会有怎么没有删去旧索引的错觉了。 :)