我是 Sphinx 用户 3 年了。我现在遇到的问题是集群和方面的支持。
关于方面的支持,我知道我也可以用 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 where to select only de_job?
我在狮身人面像: min_word_len 和 min_infix_len 。如何在 Solr 中使用它?我在哪里可以配置它?
我在 Sphinx 中定义了自定义停用词。如何在 Solr 中为每个索引定义和使用它们?
在 sphinx 中,我必须定义 charset_table,因为 sphinx 无法搜索例如德语变音符号或其他 UTF-8 字符,如果它们不是由 charset_table 翻译的。我在 Solr 中也需要同样的东西吗?
在索引中,当我旋转索引时,sphinx 正在创建一个 tmp 文件,重新索引数据并即时旋转它。通过这种方式,我的应用程序在 sphinx 重新索引所有内容的时间运行。如何用 Solr 解决这个问题?当我查看 Solr 的日志文件时,当索引正在重建时,则停留在:
从索引中删除所有文档
有什么不好的,因为我的应用程序将无法运行。我怎样才能以优雅的方式解决这个问题?