我正在寻找扩展当前Apache Solr(4.x)的解决方案,以便它可用于支持大量语言。我想采用多核方法,并设置了我的solr,使其具有英语核心和日语核心(对于初学者)。为了挑战,我给了n个.xml文件,其中包含solr将用于索引的数据。所以要明确:
我有n种语言,我有n个.xml文件(每种语言一个.xml)。每个.xml文件在标记方面都是相同的,只有原始文本不同。
我的问题是,我似乎无法弄清楚如何将english.xml文件严格地发送到英语核心,将japanese.xml文件严格地发送到日语核心,这样当我访问我的页面时:
www.example.com/ us /index.html,我正在查看english.xml索引结果,
www.example.com/ jp /index.html为我提供了japanese.xml索引结果。
实际上只需要一个模式,因为不同的语言.xml文件的标签结构相同,但我复制了所有模式,因为每个模式文件都将针对它的各自语言进行优化。
if(TLDR){
How would I independently post:
english.xml -> core-english
japanese.xml -> core-japanese
Or what would be a better approach that gives me
facet and search independent groups so that I can localize my pages?
}
显然我不希望有不同的solr实例运行。
答案 0 :(得分:1)
本杰明,你的方法很完美。多核是一种很好的方式。
假设您的服务器位于IP 10.10.10.10
,并且solr正在端口8983下运行,那么您的多核应该类似于:
10.10.10.10:8983/solr/us
10.10.10.10:8983/solr/jp
10.10.10.10:8983/solr/fr
......等等
要记住几件事:
发布XML
这是您发布不同国家/地区的各种XML文件内容的方式:
<强> US 强>
curl http://10.10.10.10:8983/solr/us/update?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">1</field><field name="title">First Item</field></doc><doc><field name="id">2</field><field name="title">Second Item</field></doc></add>'
<强> FR:强>
curl http://10.10.10.10:8983/solr/fr/update?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">1</field><field name="title">premier article</field></doc><doc><field name="id">2</field><field name="title">deuxième article</field></doc></add>'
<强> JP:强>
curl http://10.10.10.10:8983/solr/jp/update?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">1</field><field name="title">最初の項目</field></doc><doc><field name="id">2</field><field name="title">番目の項目</field></doc></add>'
<强> SEARCHING 强>
您可以通过查询核心来独立搜索每个国家/地区:
搜索美国的查询:
http://10.10.10.10:8983/solr/us/select?query=john
搜索JP的查询:
http://10.10.10.10:8983/solr/jp/select?query=ジョン