我有包含~30 GB数据的数据库表。我用DIH索引它。索引数据只需1小时15分钟,但搜索速度非常慢,大约需要1分钟,这似乎不对。如果有人遇到同样的问题,请提供帮助。
我正在证明文件的内容。
数据-config.xml中
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://Battrdbtest20/test_results"
batchSize="-1"
user="results"
password="resultsloader"/>
<document>
<entity name="Syndrome"
pk="test_file_result_id"
query="SELECT * FROM Syndrome">
<Field column="test_file_result_id" name="test_file_result_id"/>
<Field column="syndrome" name="syndrome"/>
</entity>
</document>
</dataConfig>
schema.xml(仅更改了适合我数据的字段)
<fields>
<field name="test_file_result_id" type="slong" indexed="true" stored="true" required="true" omitNorms="true" multivalued="false" />
<field name="syndrome" type="string" indexed="true" stored="true" required="true" omitNorms="false" multivalued="false" />
</fields>
<uniqueKey>test_file_result_id</uniqueKey>
<defaultSearchField>syndrome</defaultSearchField>
solrconfig.xml中没有更改
test_file_result_id是10位数的id。和校正字段存储包含大量数据的blob)日志文件内容类型。)
我想提一下,当我通过test_file_result_id进行搜索时,搜索结果会在一秒内出现,但对于综合症,需要一分多钟。
提前致谢!!
答案 0 :(得分:0)
我假设string
中solr.StrField
被定义为schema.xml
。
由于您拥有大量数据,因此使用具有正确tokenizers, analyzers and filters集的字段类型可能会很有用。
例如,添加StandardTokenizerFactory会将令牌保存到有意义的值集。
字段类型定义的一个示例:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldtype>
你可以尝试这样的事情,这应该会对响应时间产生影响。