Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 按文本搜索时重复\u常规_Search_Solr_Full Text Search - Fatal编程技术网

Search 按文本搜索时重复\u常规

Search 按文本搜索时重复\u常规,search,solr,full-text-search,Search,Solr,Full Text Search,我使用的是Solr8,并以几乎默认的配置运行它。我想搜索几个文本字段,并将它们复制到_text_general_字段 这是我的managed_schema.xml的一部分: <field name="id" type="string" stored="true" required="true" /> <field name="p_name" type="string" indexed="true" stored="true" required="true" /> <

我使用的是Solr8,并以几乎默认的配置运行它。我想搜索几个文本字段,并将它们复制到_text_general_字段

这是我的managed_schema.xml的一部分:

<field name="id" type="string" stored="true" required="true" />
<field name="p_name" type="string" indexed="true" stored="true" required="true" />
<field name="p_additional_info" type="string" indexed="true" stored="true" />
<field name="p_brand" type="string" indexed="true" stored="true" />
<field name="p_manufacturer" type="string" indexed="true" stored="true" />
<field name="p_image_link" type="string" indexed="false" stored="true" />

<uniqueKey>id</uniqueKey>

<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>

<!-- copy this 3 values to basic search field -->
<copyField source="p_name" dest="_text_"/>
<copyField source="p_brand" dest="_text_"/>
<copyField source="p_additional_info" dest="_text_"/>

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.LowerCaseFilterFactory"/>        
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
有人知道怎么解决吗

UPD 我正在通过DIH从DB导入我的文档:

<dataConfig>
    <dataSource name="jdbc" driver="org.postgresql.Driver" url="jdbc:postgresql://mydb.rds.amazonaws.com:5432/myapp" user="***" password="***" readOnly="true" />
    <document>
          <entity name="products"
                  query="select id, additional_info, brand, name, image_link, country, manufacturer from products"
                  dataSource="jdbc" pk="id"> 

            <field name="id" column="id" />
            <field name="p_additional_info" column="additional_info" />
            <field name="p_brand" column="brand" />
            <field name="p_name" column="name" />
            <field name="p_country" column="country" />
            <field name="p_manufacturer" column="manufacturer" />
            <field name="p_image_link" column="image_link" />

          </entity>
    </document>
</dataConfig>


当我进行手动更改时,我的托管模式中似乎存在一些错误。在我创建了一个新文档并通过schema API进行了更改之后,正如@Ericlawault所设想的那样,一切都正常工作。

这里文档的版本不同……这表明即使您有一个uniqueKey作为id,它没有更新现有文档…它正在添加另一个具有不同版本的文档…当前您有字段id的字符串类型…尝试将其更改为整数…它也没有索引…首先尝试将索引设置为true,然后重试选项否这是一个假设!uniqueKey的“string”类型是可以的,而对于字段和字段类型定义,
索引的
属性的隐式默认值是
“true”
,因此只要“string”字段类型没有显式的
索引=“false”
,就应该索引
id
。还请记住不要手动编辑托管架构,而是使用架构API。@EricLavault:Yes..捕获良好..我已验证..字段的索引属性隐式为truedefined@MatsLindh我正在通过DIH从数据库导入所有数据。我已经用DIH配置更新了这个问题。最奇怪的是,当按文本搜索时,q=*:*没有返回重复项。。
<dataConfig>
    <dataSource name="jdbc" driver="org.postgresql.Driver" url="jdbc:postgresql://mydb.rds.amazonaws.com:5432/myapp" user="***" password="***" readOnly="true" />
    <document>
          <entity name="products"
                  query="select id, additional_info, brand, name, image_link, country, manufacturer from products"
                  dataSource="jdbc" pk="id"> 

            <field name="id" column="id" />
            <field name="p_additional_info" column="additional_info" />
            <field name="p_brand" column="brand" />
            <field name="p_name" column="name" />
            <field name="p_country" column="country" />
            <field name="p_manufacturer" column="manufacturer" />
            <field name="p_image_link" column="image_link" />

          </entity>
    </document>
</dataConfig>