我有一本300000多字的书。
每个字有元数据(语法信息;解析细节和引理[根形式])全文搜索优化技巧
什么是结构化数据,这样我可以搜索词或词的群体和快速获得结果的最佳方式。我希望能够搜索有关元数据的要求。
我需要能够搜索精确的短语或只是彼此接近的单词。
我的问题是关于数据库设计和查询方法。
我有一本300000多字的书。
每个字有元数据(语法信息;解析细节和引理[根形式])全文搜索优化技巧
什么是结构化数据,这样我可以搜索词或词的群体和快速获得结果的最佳方式。我希望能够搜索有关元数据的要求。
我需要能够搜索精确的短语或只是彼此接近的单词。
我的问题是关于数据库设计和查询方法。
我会强烈建议拉宾,卡普算法在这种情况下。虽然Rabin-Karp不如其他搜索算法那么快,但它擅长匹配多种模式,并且既然您说过要搜索多个短语和引理,它是最合适的。平均值和最好的情况都在O(n + m)
,其中n将是300,000字的组合长度,m是您正在搜索的模式的总长度。在最糟糕的情况下,您会遇到O(mn)
时间。
就存储数据而言,您可以使用大型哈希滚动表或更理想的bloom filter。
这里有一些相关的问题,文章,以及C和ruby中的实现。希望这可以帮助。
一个起点将使用Lucene + Solr设置并索引您拥有的数据。
索引是自然而然地悬挂的水果。你会把每个单词放在它自己的行中吗(和它的相应的元数据)?或者你会把这段话放在一起吗?那么你如何将它们与元数据相关联等等是我正在考虑的那类问题...... – jcuenod
谢谢我会看看这些。 – jcuenod