我是Sphinx用户3年以来。我现在面临的问题是聚类和方面的支持。
关于facet支持,我知道我也可以使用sphinx并且它会运行,因为聚类对我来说是一个非常大的问题。
我非常喜欢Sphinx,因为它易于使用且速度非常快,但我需要在接下来的几个月内更换为Solr。
如果有人有时间解释我,我想知道一些基础知识。我将在Sphinx中发布一些例子,我希望你能在Solr中给我一个例子。
作为安装,我在Debian上选择了Solr和Tomcat:
apt-get install solr-tomcat curl -y
Tomcat的这个选项更好(更快,更稳定......)然后是Jetty吗?两者都支持群集吗?
其次我用这个生成了一个Dataimport Handler:
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/database"
user="root"
password="root"
batchSize="-1"/>
<document name="doc">
<entity name="de_job"
query="select * from de_job">
<field column="title" name="title" />
<field column="description" name="description" />
<field column="job_id" name="id" />
</entity>
</document>
我打电话的时候:
http://domain.com:8080/solr/dataimport?command=full-import
然后我在5分钟内索引超过1,6M的数据行。这很棒。
以下是我的问题:
我在sphinx中有超过1个索引,想要在不同时间重新索引它们,而不是一次全部。
index de_jobs
{
source = de_jobs
path = /usr/local/sphinx/var/data/jobs_de
docinfo = extern
charset_type = utf-8
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, \
U+430..U+44F,U+C5->U+E5, \
U+E5, U+C4->U+E4, U+E4, U+D6->U+F6, U+F6, U+16B, U+0c1->a, U+0c4->a, U+0c9->e, U+0cd->i, \
U+0d3->o, U+0d4->o, U+0da->u, U+0dd->y, U+0e1->a, U+0e4->a, U+0e9->e, U+0ed->i, U+0f3->o, \
U+0f4->o, U+0fa->u, U+0fd->y, U+104->U+105, U+105, U+106->U+107, U+10c->c, U+10d->c, \
U+10e->d, U+10f->d, U+116->U+117, U+117, U+118->U+119, U+11a->e, U+11b->e, U+12E->U+12F, \
U+12F, U+139->l, U+13a->l, U+13d->l, U+13e->l, U+141->U+142, U+142, U+143->U+144, \
U+144,U+147->n, U+148->n, U+154->r, U+155->r, U+158->r, U+159->r, U+15A->U+15B, U+15B, \
U+160->s, U+160->U+161, U+161->s, U+164->t, U+165->t, U+16A->U+16B, U+16B, U+16e->u, \
U+16f->u, U+172->U+173, U+173, U+179->U+17A, U+17A, U+17B->U+17C, U+17C, U+17d->z, \
U+17e->z, U+DC->U+FC, U+DF, U+FC,
min_word_len = 3
min_infix_len = 7
stopwords = /usr/local/sphinx/var/stopwords/stop_words_de.txt
}
index at_jobs
{
source = at_jobs
path = /usr/local/sphinx/var/data/jobs_at
docinfo = extern
charset_type = utf-8
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, \
U+430..U+44F,U+C5->U+E5, \
U+E5, U+C4->U+E4, U+E4, U+D6->U+F6, U+F6, U+16B, U+0c1->a, U+0c4->a, U+0c9->e, U+0cd->i, \
U+0d3->o, U+0d4->o, U+0da->u, U+0dd->y, U+0e1->a, U+0e4->a, U+0e9->e, U+0ed->i, U+0f3->o, \
U+0f4->o, U+0fa->u, U+0fd->y, U+104->U+105, U+105, U+106->U+107, U+10c->c, U+10d->c, \
U+10e->d, U+10f->d, U+116->U+117, U+117, U+118->U+119, U+11a->e, U+11b->e, U+12E->U+12F, \
U+12F, U+139->l, U+13a->l, U+13d->l, U+13e->l, U+141->U+142, U+142, U+143->U+144, \
U+144,U+147->n, U+148->n, U+154->r, U+155->r, U+158->r, U+159->r, U+15A->U+15B, U+15B, \
U+160->s, U+160->U+161, U+161->s, U+164->t, U+165->t, U+16A->U+16B, U+16B, U+16e->u, \
U+16f->u, U+172->U+173, U+173, U+179->U+17A, U+17A, U+17B->U+17C, U+17C, U+17d->z, \
U+17e->z, U+DC->U+FC, U+DF, U+FC,
min_word_len = 3
min_infix_len = 7
stopwords = /usr/local/sphinx/var/stopwords/stop_words_de.txt
}
如何在Solr 2或更多不同的索引中启用?
以下表格中的这些不同实体是什么?
<entity name="de_job"
query="select * from de_job">
<field column="title" name="title" />
<field column="description" name="description" />
<field column="job_id" name="id" />
</entity>
<entity name="at_job"
query="select * from at_job">
<field column="title" name="title" />
<field column="description" name="description" />
<field column="job_id" name="id" />
</entity>
如何仅重新索引一个索引?重建索引查询中是否有任何参数: http://domain.com:8080/solr/dataimport?command=full-import例如,在哪里只选择de_job?
我在Sphinx:min_word_len和min_infix_len。如何在Solr中使用它?我在哪里可以配置它?
我在Sphinx中定义了自定义停用词。如何在Solr中为每个索引定义和使用它们?
在sphinx中我必须定义charset_table,因为sphinx不能搜索德语变音符号或其他UTF-8字符,如果它们没有被charset_table翻译。在Solr中我需要相同的吗?
在我旋转索引的索引中,然后sphinx正在创建一个tmp文件,重新索引数据并动态旋转它。通过这种方式,我的应用程序正在运行,其中sphinx正在重新索引所有内容。如何用Solr解决这个问题?当我查看Solr的日志文件时,当索引正在重建时,那就是停留:
从索引中删除所有文件
有什么不好,因为在我的应用程序无法运行的时候。我怎样才能以优雅的方式解决这个问题?
答案 0 :(得分:0)
为每个索引创建单独的核心。然后每个人都有自己的dataimport URL。
(a)min_word_len,忽略这一点,不需要。 (b)min_infix_len,现在可以忽略,除非你做了一个通配符查询。如果您这样做,请考虑使用Ngrams。
在您的架构中,定义一个停用词过滤器并将您的停用词放在一个文件中。更好的是,不要使用停用词。这些都是32位计算机和40兆字节磁盘留下的坏习惯。
您可以在架构中使用ISOLatin1AccentFilterFactory(http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters/#solr.ISOLatin1AccentFilterFactory)。
这是正常的,在索引完成并提交新内容之前,删除实际上不会发生。