题
我建立一个"书搜索"API使用分类:设.我需要索引书的名称,提交人和图书分类领域分类:设指标。
一个单一的书可以属于多种不同书的类别...例如:
BookName1--小说,幽默,哲学。BookName1--是小说,科学。BookName1--的幽默感,业务。BookName4的幽默 等。。...
用户应当能够搜索所有的书籍,在一个特定的类别说"homour".
鉴于这种情况,我怎么引述领域和建立查询分类:设在?
解决方案
你可以有一个领域分类:设文件的发生多次。创建文档,加值的名称和提交人,然后做同样的每个类别
- 创造新的分类:设文件
- 增加名字和价值
- 添加提交人领域和价值
- 为每个类别:
- 添加类别领域和价值
- 添加文件的索引
当你搜索的索引用一个类别,它将返回的所有文件,有一个分类领域的价值你之后。该类别应该是一个"关键字"的领域。
我写它的英文,因为特定的代码是稍微不同的每分类:设的版本。
其他提示
您可以创建一个简单的“类别”字段,您可以在其中列出按空格分隔的书籍的所有分类。
然后你可以搜索:
stock market AND category:(+"business")
或者,如果您想要搜索多个类别
stock market AND category:(+"business" +"philosophy")
我会使用 Solr - 它建立在Lucene上并由ASF管理,但是比Lucene更容易使用,特别是对于新手来说。
如果提供Lucene的几乎所有主要功能(当然,您所描述的项目所需的一切),以及快照,复制,模式等额外的东西......
在Solr中,您只需在 schema.xml
中定义要为此类索引的字段:
<field name="book_id" type="string" indexed="true" stored="true" required="true" multiValued='false'/>
<field name="book_name" type="text" indexed="true" stored="true" required="true" multiValued='false' />
<field name="book_authors" type="text" indexed="true" stored="true" required="true" multiValued='true' />
<field name="book_categories" type="textTight" indexed="true" stored="true" required="true" multiValued='true' />
请注意, multiValued ='true'
属性可让您有效地将数组或列表传递给此字段,Solr可以很好地对其进行拆分和索引。
一旦你有了这个,启动Solr并且你可以询问诸如“ book_authors:Hemingway
”之类的查询。或“ book_categories:Romance book_categories:Mills
&quot;。
有几个预编写和配置的查询处理程序可以解析复杂查询(模糊匹配,布尔运算,评分提升......等),并且当Solr的API通过HTTP公开时,所有这些都被包装由许多客户端库,因此您不需要自己处理制作查询的低级细节。